Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Triple Inner bergabung dengan lebih dari 10.000 baris dan aplikasi kios perhitungan asp

Mari kita analisis ini sambil mengingat SQL memiliki ORDER BY Clause:-

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

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

  rs.movenext 
loop

Perhatikan Response.Flush , hal pertama yang akan saya lakukan adalah menyingkirkan itu. Anda mungkin perlu meningkatkan Batas Penyangga Respons ASP (di manajer IIS). Flush mengirimkan konten yang dihasilkan sejauh ini ke klien, menunggu klien untuk mengakui penerimaan semua paket yang dikirim sebelum selesai. Di situlah saya akan menebak 90% dari 5+ menit dihabiskan.

Sekarang "BANYAK perhitungan". VBScript tidak tahu kinerjanya. Kode ini mungkin membutuhkan waktu. Dalam beberapa kasus beberapa perhitungan dapat dilakukan jauh lebih baik dengan SQL daripada dalam skrip sehingga merupakan salah satu opsi. Yang lain adalah membangun beberapa komponen yang dikompilasi COM untuk melakukan pekerjaan yang kompleks (walaupun beberapa akuntansi perlu dibuat untuk menyusun yang dapat menghapus manfaat). Namun mungkin tidak dapat dihindari bahwa Anda perlu melakukan perhitungan ini di VBScript.

Sekarang rs.movenext . Loop ini berarti Anda menahan koneksi dan rowset terbuka hampir sepanjang waktu pemrosesan diperlukan. Itu saat server mengirim byte melalui jaringan ke klien dan saat VBScript sedang menghitung angka. Pendekatan yang jauh lebih baik akan menyedot semua rowset dengan cepat dan memutuskan sambungan dari DB, lalu angka crunch dan akhirnya membuang buffer ke klien.

Pertimbangkan untuk menggunakan recordset yang terputus (Anda menentukan kursor statis sisi klien) atau bahkan GetRows sederhana metode objek recordset yang membuang seluruh rowset ke dalam array 2 dimensi. Ini berarti Anda mempertahankan kunci pada berbagai tabel dalam waktu sesingkat mungkin.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pilih Kolom di SQL bukan di Group By

  2. TIDAK DI vs TIDAK ADA

  3. Gabungkan interval tanggal yang tumpang tindih

  4. Hapus duplikat dari kumpulan data besar (>100 juta baris)

  5. membuat beberapa subgrup agregasi