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

MySQL indexy a pořadí

Na pořadí indexů záleží, když se podmínky vašeho dotazu vztahují pouze na PART indexu. Zvažte:

  1. SELECT * FROM table WHERE first_name="john" AND last_name="doe"

  2. SELECT * FROM table WHERE first_name="john"

  3. SELECT * FROM table WHERE last_name="doe"

Pokud je váš index (first_name , last_name ) dotazy 1 a 2 jej použijí, dotaz č. 3 nikoli. Pokud je váš index (last_name , first_name ) dotazy 1 a 3 jej použijí, dotaz č. 2 nikoli. Změna pořadí podmínek v klauzuli WHERE nemá žádný účinek ani v jednom případě.

Podrobnosti jsou zde

Aktualizovat :
V případě, že výše uvedené není jasné - MySQL může použít index pouze v případě, že sloupce v podmínkách dotazu tvoří předponu indexu zcela vlevo. Dotaz č. 2 výše nelze použít (last_name , first_name ), protože je založen pouze na first_name a first_name NENÍ předpona zcela vlevo od (last_name , first_name ) index.

Na pořadí podmínek V rámci dotazu nezáleží; dotaz #1 výše bude moci použít (last_name , first_name ) index je v pořádku, protože jeho podmínky jsou first_name a last_name a dohromady tvoří předponu zcela vlevo (last_name , first_name ) index.



  1. Dotaz MySQL se zasekl a musel proces zabít

  2. Zálohujte/obnovte databázi SQLlite do složky aplikace Disk Google

  3. Nelze se připojit k serveru – chyba související se sítí nebo specifická pro instanci

  4. Způsoby, jak se vyhnout synchronizaci příkazů MySQLdb; tento příkaz nelze spustit nyní (2014) výjimka