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

Jak vysvětlím dotaz s parametry v MySQL

Pokud děláte pouze rovná se (a ne lajk, který může mít vliv na zkrat), jednoduše to nahraďte hodnotou:

EXPLAIN SELECT foo FROM bar WHERE some_column = 'foo';

Protože ve skutečnosti dotaz neprovádí, výsledky by se neměly lišit od skutečných. Jsou případy, kdy to není pravda (už jsem zmínil LIKE). Zde je příklad různých případů LIKE :

SELECT * FROM a WHERE a.foo LIKE ?
  1. Parametr 1 ==Foo - Může použít skenování indexu, pokud index existuje.
  2. Parametr 1 ==%Foo - Vyžaduje úplné prohledání tabulky, i když index existuje
  3. Parametr 1 ==Foo% - Může použít skenování indexu v závislosti na mohutnosti indexu a dalších faktorech

Pokud se připojujete, a klauzule where vede k nemožné kombinaci (a tudíž dojde ke zkratu). Například:

SELECT * FROM a JOIN b ON a.id = b.id WHERE a.id = ? AND b.id = ?

Pokud jsou první a druhý parametr stejné, má jeden prováděcí plán, a pokud se liší, dojde ke zkratu (a vrátí 0 řádků, aniž by se zasáhla jakákoli data)...

Jsou i další, ale to je vše, na co teď z hlavy myslím...



  1. Jak navrhnout databázový model pro rezervační systém kina

  2. Záznam klonu SQL s jedinečným indexem

  3. jak vypočítat jedinečné hodnoty sloupců v mysql

  4. MySQL - Jak vkládat do více tabulek s cizími klíči