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

Защо UNION заявките са толкова бавни в MySQL?

Вашите заявки включват ORDER BY … LIMIT клаузи?

Ако поставите ORDER BY … LIMIT след UNION , той се прилага към целия UNION , и в този случай не могат да се използват индекси.

Ако id е първичен ключ, тази заявка ще бъде незабавна:

SELECT  *
FROM    table
ORDER BY id
LIMIT 1

, но този няма да:

SELECT  *
FROM    table
UNION ALL
SELECT  *
FROM    table
ORDER BY id
LIMIT 1

Това също изглежда се дължи на ORDER BY . Сортирането на по-малък набор е по-бързо от по-голям.

Трябва ли полученият набор да бъде сортиран?

Ако не, просто се отървете от крайния ORDER BY .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Workbench не показва резултати от заявка

  2. Как да промените директорията на базата данни mysql на WAMP

  3. Съхранение на съдържанието на PHP масив в MySQL база данни

  4. Заявка точки в рамките на даден радиус в MySQL

  5. файлът не се качва в ajax php mysql