Pokud máte velmi velkou tabulku, může být vyhledávání hodnot, které nejsou indexovány, extrémně pomalé. Z hlediska MySQL tento druh dotazu skončí jako „skenování tabulky“, což je způsob, jak říci, že se musí testovat postupně proti každému řádku v tabulce. To samozřejmě není nejlepší způsob, jak to udělat.
Přidání indexu pomůže číst rychlosti, ale cena, kterou zaplatíte, je o něco pomalejší zápis rychlosti. Při optimalizaci se vždy jedná o kompromis, ale ve vašem případě by bylo zkrácení doby čtení obrovské, zatímco prodloužení doby zápisu by bylo marginální.
Mějte na paměti, že přidání indexu do velké tabulky může zabrat značné množství času, proto jej před použitím ve svém produkčním systému otestujte s produkčními daty. Tabulka bude pravděpodobně uzamčena po dobu trvání ALTER TABLE
prohlášení.
Jako vždy použijte EXPLAIN
na vaše dotazy, abyste určili jejich strategii provádění. Ve vašem případě by to bylo něco jako:
EXPLAIN SELECT * FROM table1 WHERE my_big_number=19287319283784