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.

È stato utile?

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
scroll top