sql >> Databáze >  >> Database Tools >> phpMyAdmin

MySql - WAMP - Obrovská tabulka je velmi pomalá (20 milionů řádků)

Některé odpovědi:

  • 20 milionů řádků je v rámci možností MySQL. Pracuji na databázi, která má v jedné ze svých tabulek přes 500 milionů řádků. Restrukturalizace tabulky může trvat hodiny, ale běžné dotazy nepředstavují problém, pokud jim pomáhá index.

  • Váš notebook je značně zastaralý a nedostatečný pro použití jako databázový server ve velkém měřítku. Restrukturalizace tabulky bude trvat dlouho. Pravděpodobně vás omezuje malé množství paměti a obvykle pomalý disk notebooku. Pravděpodobně také používáte výchozí nastavení pro MySQL, které je navrženo tak, aby fungovalo na velmi starých počítačích.

  • Nedoporučuji používat TEXT datový typ pro každý sloupec. Není důvod, abyste potřebovali TEXT pro většinu těchto sloupců.

  • Nevytvářejte index pro každý sloupec, zvláště pokud trváte na použití TEXT typy dat. Nemůžete ani indexovat TEXT pokud nedefinujete index prefixu . Obecně volte indexy pro podporu konkrétních dotazů.

Pravděpodobně máte mnoho dalších otázek na základě výše uvedeného, ​​ale v jediném příspěvku StackOverflow je toho příliš mnoho. Pokud se chystáte pracovat s databázemi, možná budete chtít absolvovat školení nebo si přečíst knihu.
Doporučuji Vysoce výkonné MySQL, 2. vydání .

K vašim doplňujícím otázkám:

Pro ladění MySQL je dobré začít zde:http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/

Mnoho operací ALTER TABLE způsobí restrukturalizaci tabulky, což znamená v podstatě uzamknout tabulku, vytvořit kopii celé tabulky s aplikovanými změnami a poté přejmenovat nové a staré tabulky a starou tabulku zrušit. Pokud je stůl velmi velký, může to trvat dlouho.

Datový typ TEXT může uložit až 64 kB, což je příliš mnoho pro telefonní číslo nebo stát. Pro typické telefonní číslo v USA bych použil CHAR(10). Pro stát USA bych použil CHAR(2). Obecně používejte nejkompaktnější a nejšetrnější datový typ, který podporuje rozsah dat, který v daném sloupci potřebujete.



  1. Závažná chyba:Volání nedefinované funkce mb_detect_encoding() v C:\apache\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc na řádku 177

  2. Vytvořil jsem několik uložených procedur v phpmyadmin, jak je volat pomocí dotazu SQL?

  3. Android :Je JDBC podporován v zařízeních Android?

  4. Co představuje přerušovaná / tečkovaná čára vztahu v SQL Management Studio - Diagram databáze