Autor | Zpráva | ||
---|---|---|---|
Andrej.B Profil |
#1 · Zasláno: 18. 11. 2022, 11:19:30
Zdravim,
mam problem pri zobrazení výsledkov podla GROUP BY jednoduchy SELECT z tabulky udrzba_data, riadkov cca 500k+ SELECT Operator SELECT Operator
FROM `udrzba_data`
Group by Operator SELECT Meno SELECT Meno
FROM `udrzba_data`
Group by Meno oba samostatne: vysledok 79 rows (0.037 s) - absolutne perfeknte Kedze potrebujem aj meno a operator, pouzijem 1SELECT Operator, Meno SELECT Operator, Meno
FROM `udrzba_data`
Group by Operator 1SELECT Operator, Meno SELECT Operator, Meno
FROM `udrzba_data`
Group by Meno 79 rows (5.823 s) - uz je problem s 5 sekundami Pokial pouzijem 1SELECT Operator, Meno SELECT Operator, Meno
FROM `udrzba_data`
Group by Operator, Meno Tak je to lepsie a dava mi 0.7 sekundy. Moze mi niekto povedat, co je tam zle, alebo preco je ten cas taky zly? Na Operator aj na Meno je dany INDEX Dakujem |
||
juriad Profil |
#2 · Zasláno: 18. 11. 2022, 11:47:46
Ten druhý dotaz, kde máš dva sloupce a grupuješ jen podle jednoho je nevalidní SQL, které MySQL v některých módech dovolí. Netuším proč je pomalý.
U posledního dotazu, který je již validní, tipuji, že se nepoužíje jeden z indexů. Zkusil bych vytvořit index přes oba sloupce, jestli to pomůže. create index on `udrzba_data` (Operator, Meno) create index on `udrzba_data` (Operator, Meno) Pokud máš dostatečně novou verzi databáze pošli explain analyze - viz dev.mysql.com/blog-archive/mysql-explain-analyze, jinak obyčejný explain , který alespoň poví, který index se použil/nepoužil.
|
||
Andrej.B Profil |
#3 · Zasláno: 18. 11. 2022, 14:01:30
juriad:
„Ten druhý dotaz, kde máš dva sloupce a grupuješ jen podle jednoho je nevalidní SQL, které MySQL v některých módech dovolí. Netuším proč je pomalý.“ Prestanem pouzivat „U posledního dotazu, který je již validní, tipuji, že se nepoužíje jeden z indexů. Zkusil bych vytvořit index přes oba sloupce, jestli to pomůže.“ perfekt cez oba to ide rychlo Samostatne pomaly Dakujem moc |
||
Stroganov Profil * |
#4 · Zasláno: 19. 11. 2022, 00:12:05
Andrej.B:
Ešte jeden tip - ak groupujete podľa viacerých stĺpcov, overte si, či vám vychádza lepšie: 1SELECT Operator, Meno SELECT Operator, Meno
FROM `udrzba_data`
Group by Operator, Meno s indexom Operator, Meno, ako to máte teraz alebo: 1SELECT Operator, Meno SELECT Operator, Meno
FROM `udrzba_data`
Group by Meno, Operator s indexom Meno, Operator V zásade platí, že je lepšie uviesť ako prvý stĺpec, ktorý pri groupovaní vráti menej riadkov. |
||
Andrej.B Profil |
Stroganov:
rozdiel je citit, miesto 0.08s mam okolo 0.5s, ale furt lepsie ako 5 sekund predtym. Dakujem za dalsi tip. Data budu cez milion riadkov, takze potreba bude kazdeho lepsieho Selectu :) |
||
petr d. Profil * |
#6 · Zasláno: 21. 11. 2022, 13:51:18
Andrej.B:
„e a grupuješ jen podle jednoho je nevalidní SQL“ |
||
Časová prodleva: 2 roky
|
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.
Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:
Běda vám, jestli to bude blábol.
0