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

Záleží na pořadí polí vícesloupcového indexu v MySQL

Při probírání vícesloupcových rejstříků používám analogii k telefonnímu seznamu. Telefonní seznam je v podstatě rejstřík na příjmení a poté na jméno. Pořadí řazení je tedy určeno tím, který "sloupec" je první. Vyhledávání spadají do několika kategorií:

  1. Pokud vyhledáte lidi, jejichž příjmení je Smith, můžete je snadno najít, protože kniha je řazena podle příjmení.

  2. Pokud vyhledáte lidi, jejichž křestní jméno je John, telefonní seznam vám nepomůže, protože Johnovi jsou roztroušeni po celé knize. Musíte naskenovat celý telefonní seznam, abyste je našli všechny.

  3. Pokud vyhledáte lidi s konkrétním příjmením Smith a konkrétním křestním jménem John, kniha vám pomůže, protože najdete Smithy seřazené dohromady a v rámci této skupiny Smithů jsou Johnové také nalezeni v seřazeném pořadí.

Pokud byste měli telefonní seznam seřazený podle křestního jména a poté podle příjmení, řazení seznamu by vám pomohlo ve výše uvedených případech #2 a #3, ale ne v případě #1.

To vysvětluje případy vyhledávání přesných hodnot, ale co když hledáte podle rozsahů hodnot? Řekněme, že jste chtěli najít všechny lidi, jejichž křestní jméno je John a jejichž příjmení začíná na „S“ (Smith, Saunders, Staunton, Sherman atd.). Johns jsou seřazeny pod 'J' v rámci každého příjmení, ale pokud chcete všechny Johny pro všechna příjmení začínající na 'S', Johns nejsou seskupeny. Jsou opět rozházené, takže nakonec musíte prohledat všechna jména s příjmením začínajícím na „S“. Zatímco kdyby byl telefonní seznam uspořádán podle křestního jména a poté podle příjmení, našli byste všechny Johny pohromadě, pak by v rámci Johns byla všechna příjmení „S“ seskupena dohromady.

Na pořadí sloupců ve vícesloupcovém indexu tedy rozhodně záleží. Jeden typ dotazu může vyžadovat určité pořadí sloupců pro index. Pokud máte několik typů dotazů, možná budete potřebovat několik indexů, které jim pomohou, se sloupci v různém pořadí.

Můžete si přečíst moji prezentaci Jak navrhovat indexy, opravdu pro více informací.



  1. PHP/MySQL – zahrnout množná čísla, ale vyloučit singuláry

  2. Import CSV nebo XML do MySQL

  3. Jak otevřete soubor SDF (SQL Server Compact Edition)?

  4. Ukládání obrázků do databáze mysql