sql >> Databáze >  >> RDS >> Mysql

Proč jsou UNION dotazy v MySQL tak pomalé?

Zahrnují vaše dotazy ORDER BY … LIMIT? doložky?

Pokud zadáte ORDER BY … LIMIT za UNION , použije se na celý UNION a indexy v tomto případě nelze použít.

Pokud id je primární klíč, tento dotaz bude okamžitý:

SELECT  *
FROM    table
ORDER BY id
LIMIT 1

, ale tento nebude:

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

Zdá se, že je to také způsobeno ORDER BY . Třídění menší sady je rychlejší než větší.

Potřebujete výslednou sadu seřadit?

Pokud ne, stačí se zbavit posledního ORDER BY .



  1. django auth Uživatel ořezává pole e-mailu

  2. Rozdělte řetězec mezerou a znakem jako oddělovač v Oracle pomocí regexp_substr

  3. Datetime stejný nebo větší než dnes v MySQL

  4. Vložit všechna data datagridview do databáze najednou