Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tham gia gấp ba bên trong với hơn 10.000 hàng và ứng dụng quầy tính toán asp

Hãy phân tích điều này trong khi cũng lưu ý rằng SQL có Mệnh đề ORDER BY:-

do until rs.eof 
  response.flush 
  counter = counter + 1 

  ' A LOT of calculations and putting in array... 

  rs.movenext 
loop

Lưu ý Response.Flush , điều đầu tiên tôi sẽ làm là loại bỏ điều đó. Bạn có thể sẽ cần tăng Giới hạn đệm đáp ứng ASP (trong trình quản lý IIS). Flush đang gửi nội dung được tạo cho đến nay cho máy khách, nó đợi máy khách xác nhận đã nhận tất cả các gói được gửi trước khi hoàn tất. Đó là nơi tôi đoán 90% thời lượng hơn 5 phút được sử dụng.

Bây giờ là "RẤT NHIỀU tính toán". VBScript không được biết về hoạt động của nó. Mã này có thể mất một chút thời gian. Trong một số trường hợp, một số tính toán có thể được thực hiện bằng SQL tốt hơn nhiều so với trong tập lệnh, vì vậy đó là một lựa chọn. Cách khác sẽ là xây dựng một số thành phần được biên dịch COM để thực hiện công việc phức tạp (mặc dù một số kế toán cần thực hiện cho việc phân phối có thể làm mất đi các lợi ích). Tuy nhiên, có thể không tránh khỏi việc bạn cần phải thực hiện các calcs này trong VBScript.

Bây giờ rs.movenext . Vòng lặp này có nghĩa là bạn giữ kết nối và tập hợp hàng mở trong hầu hết thời gian quá trình xử lý được yêu cầu. Đó là trong khi các máy chủ đang gửi các byte qua mạng tới máy khách và trong khi VBScript đang xử lý các con số. Một cách tiếp cận tốt hơn nhiều sẽ là hút tất cả các bộ hàng một cách nhanh chóng và ngắt kết nối khỏi DB, sau đó số crunch và cuối cùng kết xuất bộ đệm cho máy khách.

Hãy xem xét sử dụng tập hợp bản ghi đã ngắt kết nối (bạn chỉ định con trỏ tĩnh phía máy khách) hoặc thậm chí là GetRows đơn giản phương thức của đối tượng tập bản ghi kết xuất toàn bộ tập hợp hàng vào một mảng 2 chiều. Điều này có nghĩa là bạn duy trì khóa trên các bảng khác nhau trong thời gian nhỏ nhất có thể.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xem sp_execute đang làm gì

  2. Làm cách nào để tải một tệp phẳng lớn vào bảng cơ sở dữ liệu bằng SSIS?

  3. SQL Server tương đương với ORACLE INSTR

  4. Cách sử dụng GOTO trong SQL Server

  5. Ai làm @@ OPTIONS và sp_configure cung cấp đầu ra khác nhau?