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

MySQL - vícesloupcový index

Obecným pravidlem pro indexy je přihodit jednu na jakékoli pole použité v WHERE nebo JOIN doložka.

Jak již bylo řečeno, existuje několik optimalizací, které můžete provést. Pokud VÍTE že určitá kombinace polí je jediná, která bude kdy použita ve WHERE na konkrétní tabulce, pak můžete vytvořit jeden klíč s více poli pouze pro tato pole, např.

INDEX (field1, field2, field5)

v.s.

INDEX (field1),
INDEX (field2),
INDEX (field5)

Vícepolový index může být v mnoha případech efektivnější, oproti nutnosti skenovat více indexů. Nevýhodou je, že index s více poli je použitelný pouze v případě, že jsou daná pole skutečně použita v klauzuli WHERE.

S vašimi ukázkovými dotazy od element a field_id jsou ve všech třech indexech, možná by bylo lepší je rozdělit do jejich vlastního vyhrazeného indexu. Pokud se jedná o měnitelná pole, je lepší ponechat jim vlastní vyhrazený index. např. pokud někdy budete muset změnit field_id hromadně musí DB aktualizovat 3 různé indexy, v.s. aktualizace pouze jednoho vyhrazeného.

Vše se ale týká srovnávání – otestujte své konkrétní nastavení pomocí různých nastavení indexů a zjistěte, které funguje nejlépe. Základní pravidla jsou užitečná, ale nefungují 100% času.




  1. Jaký je dokonalý nástroj pro vývoj PL/SQL?

  2. Vývoj Rails – Nelze se připojit k serveru MySQL na „localhost“ (10061)

  3. Entity Framework s MySQL – vypršel časový limit při generování modelu

  4. T-SQL rozdělený řetězec na základě oddělovače