Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego zapytania UNION są tak wolne w MySQL?

Czy Twoje zapytania zawierają ORDER BY … LIMIT klauzule?

Jeśli umieścisz ORDER BY … LIMIT po UNION , zostanie zastosowany do całej UNION w tym przypadku nie można używać indeksów.

Jeśli id jest kluczem podstawowym, to zapytanie będzie natychmiastowe:

SELECT  *
FROM    table
ORDER BY id
LIMIT 1

, ale ten nie:

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

Wydaje się, że jest to również spowodowane ORDER BY . Sortowanie mniejszego zestawu jest szybsze niż większego.

Czy chcesz posortować wynikowy zestaw?

Jeśli nie, pozbądź się ostatniego 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. 2 sposoby na wyświetlenie listy wszystkich funkcji w MySQL

  2. Zalety MySQLi nad MySQL

  3. Jak ustawić format autoinkrementacji na 0001 w MySQL?

  4. Wyszukiwanie pełnotekstowe MySQL w wielu tabelach

  5. Jak zbudować prosty system oceniania i oceny na 5 gwiazdek?