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

MySQL-Výkon při objednávání na kalkulovaném sloupci

Ve skutečnosti tento dotaz nemůžete optimalizovat.

Výsledek třídíte pomocí vypočítané hodnoty, takže nemůžete použít index. Pokud použijete explain můžete vidět, jak se váš dotaz provádí, a using temporary bude přítomen v extra sloupec, což znamená, že všechna data z vašeho dotazu se ukládají do dočasné tabulky, ve které se provádí řazení.

Nezáleží na tom, zda chcete v dotazu pouze prvních 50 shod, musí nejprve získat všechna data, uložit je do dočasné tabulky, seřadit výsledek v této tabulce a poté vám vrátit prvních 50 shod.

Jak můžete předpokládat, je to operace náročná na čas a paměť.

Nejlepší možností je tedy umístit do tabulky index, abyste získali všechny potřebné řádky co nejrychleji, a poté je zpracovat pomocí php abyste získali data, která potřebujete.

Mimochodem, podívejte se na průvodce optimalizací MySQL .



  1. Nainstalujte pdo pro postgres Ubuntu

  2. Vytvoření uživatele PostgreSQL a jeho přidání do databáze

  3. Přeměna libovolně mnoha řádků na sloupce v PostgreSQL

  4. Jak srovnávat výkon PostgreSQL pomocí Sysbench