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

Скорост на странираните заявки в Oracle

Основният проблем със Случай 2 е, че в много случаи целият набор от резултати от заявката трябва да бъде получен и след това сортиран преди първите N реда могат да бъдат върнати - освен ако колоните ORDER BY не са индексирани и Oracle може да използва индекса, за да избегне сортиране. За сложна заявка и голям набор от данни това може да отнеме известно време. Възможно е обаче да има някои неща, които можете да направите, за да подобрите скоростта:

  1. Опитайте се да се уверите, че във вътрешния SQL не се извикват функции - те може да бъдат извикани 5 милиона пъти само за да върнат първите 20 реда. Ако можете да преместите тези извиквания на функции към външната заявка, те ще бъдат извиквани по-малко.
  2. Използвайте подсказка FIRST_ROWS_n, за да подтикнете Oracle да оптимизира факта, че никога няма да върнете всички данни.

РЕДАКТИРАНЕ:

Друга мисъл:в момента представяте на потребителя отчет, който може връща хиляди или милиони редове, но потребителят никога няма реалистично да ги прегледа всички. Не можете ли да ги принудите да изберат по-малко количество данни, напр. чрез ограничаване на избрания период от време до 3 месеца (или каквото и да е)?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL броене по група

  2. Изчисляване на празници:брой съботи и недели в дадения период от време заявка в Oracle

  3. Изберете първите 150 реда, след това следващите 150 и така нататък?

  4. SQL Server еквивалент на Oracle „CONNECT BY PRIOR“ и „ORDER SIBLINGS BY“

  5. Изчислете времевата разлика в SQL със смени