Acabei de criar meu primeiro banco de dados e tabela MySQL, mas fiquei surpreso com o desempenho lento de uma simples instrução select. Minha tabela tem 400 milhões de linhas e minha instrução select retorna cerca de 100.000 linhas, mas demorou 14 minutos! Não tenho certeza se minha configuração está errada ou se minhas expectativas em relação ao mysql eram muito altas. Qual seria o tempo esperado para uma tabela bem projetada retornar 100.000 linhas de uma tabela de 400 milhões de linhas? Esta é a minha configuração:
CREATE TABLE CALLS (
quote_date DATE,
quote_time TIME,
expiration DATE,
delta decimal(4,3),
mid decimal(8,4)
);
CREATE INDEX idx_quote_date ON CALLS (quote_date);
CREATE INDEX idx_quote_time ON CALLS (quote_time);
CREATE INDEX idx_expiration ON CALLS (expiration);
CREATE INDEX idx_delta on CALLS (delta);
CREATE INDEX covering_index ON CALLS (quote_date, quote_time, expiration, delta);
Minha tabela serve apenas para ler dados com instruções select, então faço os índices depois de carregar todos os dados.
Minha seleção é:
select * from CALLS where DELTA BETWEEN 0.4 and 0.6;