MySQL domanda ottimizzazione - come accelerare una semplice query
-
16-10-2019 - |
Domanda
Ho un database molto semplice, una tabella con cinque colonne (una chiave intera, due VARCHAR, una data, e una doppia). La tabella contiene 909.000 record.
Un semplice query come
SELECT t.price
FROM commoddb.tbcommodprices t
WHERE
t.ticker='LAV05 Comdty'
&& t.whichprice='last'
&& t.date = '2005-09-01'
prende oltre 1,6 secondi per rispondere ad una domanda locale, che sembra molto lento. Apprezzerei tutti i suggerimenti di modi per accelerare l'operazione.
Soluzione
Ecco la vostra query originale
SELECT t.price
FROM commoddb.tbcommodprices t
WHERE t.ticker='LAV05 Comdty'
AND t.whichprice='last'
t.date = '2005-09-01';
Dal momento che non v'è che una tabella in questa query, tutto ciò che serve è un indice di buona.
ALTER TABLE commoddb.tbcommodprices ADD INDEX (ticker,whichprice,date);
L'indice dovrebbe ora essere una parte permanente del tavolo fino a quando si decide di toglierlo, che non credo che si vuole fare. Per vedere la tabella e gli indici, basta fare questo:
SHOW CREATE TABLE commoddb.tbcommodprices\G
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange