Diskuze: Pomalý GROUP BY
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
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
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:
num
jako unikátní klíč (pokud tedy je to
unikátní hodnota), mysql s nima pracuje jinak a proto jsou rychlejší (https://dev.mysql.com/…indexes.html)num
, více informací zde: https://dba.stackexchange.com/…mysql-innodb (null kolonky
nevadí tak moc jako ten klíč)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.
Zobrazeno 5 zpráv z 5.