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

Optimalizace příkazu MySQL delete

Pokud váš DELETE je určena k odstranění velké většiny řádků v této tabulce, jedna věc, kterou lidé často dělají, je zkopírovat pouze řádky, které si chcete ponechat, do duplicitní tabulky a poté použít DROP TABLE nebo TRUNCATE k vymazání původní tabulky mnohem rychleji.

Index může pomoci najít řádky, které potřebujete odstranit, ale odstranění vyžaduje aktualizaci indexu. Po smazání velkého množství řádků může být index nevyvážený a vyžaduje určitou údržbu pomocí OPTIMIZE TABLE .

DATE_SUB() funkce je konstantní výraz (nemění se řádek po řádku), takže optimalizátor dotazů by měl být dostatečně chytrý, aby to zohlednil a provedl výpočet jednou.

Pro primární klíč nemusíte vytvářet další index. Omezení primárního klíče implicitně vytváří index, který poskytuje stejnou výhodu jako index jiného než primárního klíče.

Složený index je pravděpodobně stejně užitečný jako jednosloupcový index, za předpokladu, že vaše vyhledávací kritéria odkazují na sloupec(y) nejvíce vlevo v indexu. "Pravděpodobně" varování je způsobeno tím, že jednotlivé indexové uzly jsou větší, a tak vyžaduje více paměti pro vyrovnávací paměť indexu, ale to je dostatečně malý faktor, takže bych nevytvářel celý další jednosloupcový index.



  1. SQL:Umožněte prohledávat barvy z tabulky barev

  2. Msg 8672, Level 16, State 1, Line 1 Příkaz MERGE se pokusil AKTUALIZOVAT nebo DELETE stejný řádek více než jednou

  3. Migrace MySQL na PostgreSQL na AWS RDS, část 4

  4. cizí klíče MySQL