IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Vašík Jirák:6.4.2018 1:36

Ahoj,

mám problém s výkonem GROUP BY.

Mám tabulku, která vypadá přibližně takto (s +-500 000 záznamy)

id (PK, autoincrement) date device_id num

a potřeboval bych vybrat device_id a sumu všech hodnot ze sloupce sum, tak jsem vytvořil tento dotaz

SELECT radar_id, SUM(num) as total FROM tabulka GROUP BY device_id

ale dotaz vyhodí výsledek až za cca 30s.

Nevíte o nějakém způsobu, jak to urychlit?

 
Odpovědět
6.4.2018 1:36
Avatar
Vašík Jirák:6.4.2018 1:50

Zapomněl jsem dodat, že mám ještě druhou tabulku device

device_id (PK) dalsi_data

Device_id u první tabulky je reference (cizí klíč) na device_id u této tabulky

 
Nahoru Odpovědět
6.4.2018 1:50
Avatar
JardaK
Člen
Avatar
JardaK:7.4.2018 22:34

Mas ten device_id v „tabulka“ indexovany?

 
Nahoru Odpovědět
7.4.2018 22:34
Avatar
Samuel Kodytek
Tvůrce
Avatar
Samuel Kodytek:7.4.2018 23:10

Ahoj, fakt potřebuješ sečíst všech num hodnot, sám si říkal, že jich je +/- 500 000. Zde je link kde je vysvětlený proč SUM() je pomalejší než dokonce i COUNT() https://stackoverflow.com/…ter-than-sum

Vem si, že počítáš se všemi řádky v tabulce, je to docela overkill pro stroj.

Jinak věci co by mohli zrychlit dotaz jsou:

Nahoru Odpovědět
7.4.2018 23:10
There is more than one way to screw it
Avatar
Odpovídá na Vašík Jirák
Petr Štechmüller:8.4.2018 7:58

Ahoj, co to vyřešit řadou částečných součtů?
Prostě přidáš do te tabulky další sloupec, který bude obsahovat součet novější hodnoty s předchozím částečným součtem. Tím by jsi získal v posledním záznamu součet všech řádků.
Ten částečný součet by se mohl vypočítat automaticky vždy po vložení nového řádku pomoci triggeru.

Nahoru Odpovědět
8.4.2018 7:58
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.