Zatímco se dostáváme k 'úctyhodným ', 2 miliony řádků je stále relativně malá velikost pro stůl. (A proto je obvykle možný rychlejší výkon)
Jak jste zjistili, front-endové zástupné znaky jsou obzvláště neefektivní a pokud je tento případ použití pro vaši aplikaci běžný, budeme muset najít řešení.
Je možné, že nemáte správnou sadu indexů . Než však budu pokračovat, rád bych zdůraznil, že zatímco indexy obvykle zlepší výkon DBMS pomocí příkazů SELECT všeho druhu, systematicky to negativně ovlivňuje výkon operací „CUD“ (tj. , DELETE slovesa, tj. dotazy, které píší do databáze spíše než jen číst k tomu). V některých případech může být negativní dopad indexů na „zápisové“ dotazy velmi významný.
Můj důvod, proč zvláště zdůrazňuji ambivalentní povahu indexů, je ten, že se zdá, že vaše aplikace shromažďuje značné množství dat jako běžnou součást svého provozu a budete muset sledovat možnou degradaci, protože dotazy INSERTů se zpomalují. . Možnou alternativou je provést sběr dat do relativně malé tabulky/databáze, s žádnými nebo velmi malým počtem indexů, a pravidelně importovat data z této vstupní databáze do databáze, kde probíhá vlastní dolování dat. (Po naimportování mohou být řádky vymazány ze "vstupní databáze", která zůstane malá a rychlá kvůli funkci INSERT.)
Další obava/otázka se týká šířky řádku v přetypované tabulce (počet sloupců a součet šířek těchto sloupců). Špatný výkon by mohl souviset se skutečností, že řádky jsou příliš široké, což má za následek příliš málo řádků v listových uzlech tabulky, a tedy hlubší stromovou strukturu, než je potřeba.
Zpět k indexům...
s ohledem na několik dotazů v otázce se zdá, že byste mohli mít prospěch z indexu ip + note (index vytvořený alespoň s těmito dvěma klíči v tomto pořadí). Úplnou analýzu situace indexu a upřímně řečeno možné přezkoumání schématu databáze zde nelze provést (nedostatek informací pro jednoho...), ale obecným postupem je vytvořit seznam nejběžnějších případů použití a zjistit, které databázové indexy by v těchto případech mohly pomoci. Pomocí příkazu mySQL EXPLAIN lze získat přehled o tom, jak se zachází s konkrétními dotazy, zpočátku nebo po přidání indexu.
Normalizace NEBO demormalizace (nebo skutečně kombinace obojího!) je často životaschopným nápadem, jak zlepšit výkon i během těžebních operací.