Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Тройно вътрешно свързване с над 10 000 реда и приложение за изчисления на asp

Нека анализираме това, като същевременно имаме предвид, че SQL има клауза ORDER BY:-

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

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

  rs.movenext 
loop

Обърнете внимание на Response.Flush , първото нещо, което бих направил, е да се отърва от това. Вероятно ще трябва да увеличите лимита за буфериране на ASP отговор (в IIS мениджъра). Flush изпраща генерираното досега съдържание на клиента, изчаква клиентът да потвърди получаването на всички изпратени пакети, преди да завърши. Това е мястото, където предполагам, че са изразходвани 90% от 5+ минути.

Сега "МНОГО изчисления". VBScript не е известен със своята производителност. Този код може да отнеме известно време. В някои случаи някои изчисления могат да бъдат направени много по-добре от SQL, отколкото в скрипт, така че това е една от опциите. Друго би било да се изгради някакъв COM компилиран компонент за извършване на сложна работа (въпреки че трябва да се направи известно счетоводство за сортиране, което може да унищожи ползите). Въпреки това може да е неизбежно да трябва да направите тези изчисления във VBScript.

Сега rs.movenext . Този цикъл означава, че държите връзката и набора от редове отворени почти през цялото време, когато се изисква обработката. Това е докато сървърите изпращат байтове по мрежата към клиента и докато VBScript разбива числа. Много по-добър подход би бил да изсмучете бързо целия набор от редове и да прекъснете връзката с DB, след което кратки числа и накрая изхвърлете буфера на клиента.

Помислете за използване на несвързан набор от записи (посочвате статичен курсор от страна на клиента) или дори простия GetRows метод на обекта набор от записи, който изхвърля целия набор от редове в двуизмерен масив. Това ще означава, че поддържате ключалки на различните маси за възможно най-кратко време.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. не може да се отвори, защото е версия 706. Този сървър поддържа версия 662 и по-стари. Пътят на понижаване не се поддържа

  2. Проверете дали таблицата съществува в SQL Server

  3. Върнете всички файлови групи за текущата база данни в SQL Server

  4. T-SQL MERGE Производителност в типичен контекст на публикуване

  5. Разбиране на размера на съхранение на „време“ в SQL Server