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

Pomohlo by přidat index do sloupce BIGINT v MySQL?

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


  1. Jak volat uloženou proceduru MySQL z kódu PHP?

  2. Přejmenujte sloupec v tabulce mysql, aniž byste museli opakovat definici jeho typu

  3. MYSQL:Sloučit dvě tabulky do jedné pomocí spojení

  4. Seskupte pouze sousední řádky