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

Je správné indexovat všechny sloupce v databázi mysql?

Ne, neindexujete všechny sloupce. Indexujete sloupce, které se konkrétně týkají WHERE klauzule a někdy, pokud jsou součástí ORDER BY .

V tomto případě byste chtěli index na type :

SELECT name FROM users WHERE type='admin'

V tomto případě byste chtěli index na active,type :

SELECT name FROM users WHERE type='admin' AND active=1

V tomto případě můžete chtít index na active,type,name :

SELECT name FROM users WHERE type-='admin' AND active=1 ORDER BY name LIMIT 10

Čím více indexů přidáte, tím pomalejší bude zápis, ale rychlejší čtení. Jedná se o klasický kompromis. Pečlivě vyhodnoťte, jaké indexy potřebujete, a použijte je pouze v případě, že z toho bude hmatatelný přínos. Neplácejte je jen proto, že máte pocit, že by tam měli být.

Na velmi malých tabulkách, které mají <1000 řádků, indexy tolik nepomohou, protože skenování tabulky nebude trvat tak dlouho. V čemkoli netriviálním jsou naprosto nezbytné.

Pokud máte problémy s výkonem, navrhoval bych, aby největší překážkou bylo vaše schéma, nikoli nedostatek indexů.



  1. Jak můžete zjistit, zda se používá balíček, procedura nebo funkce PL/SQL?

  2. Magento Install – název identifikátoru je příliš dlouhý

  3. Shell skript pro provádění příkazů pgsql v souborech

  4. Rychlý příspěvek o SQLite UPSERT a nové klauzuli RETURNING.