Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Desempenho do MySQL em uma tabela de 6 milhões de linhas


O que você quer ter certeza é que a consulta usará APENAS o índice, portanto, certifique-se de que o índice cubra todos os campos que você está selecionando. Além disso, como é uma consulta de intervalo envolvida, você precisa ter o venid primeiro no índice, pois é consultado como uma constante. Eu, portanto, criaria e indexaria assim:
ALTER TABLE events ADD INDEX indexNameHere (venid, date, time);

Com esse índice, todas as informações necessárias para concluir a consulta estão no índice. Isso significa que, esperamos, o mecanismo de armazenamento seja capaz de buscar as informações sem realmente procurar dentro da própria tabela. No entanto, o MyISAM pode não ser capaz de fazer isso, pois ele não armazena os dados nas folhas dos índices, então você pode não obter o aumento de velocidade desejado. Se for esse o caso, tente criar uma cópia da tabela e use o mecanismo InnoDB na cópia. Repita os mesmos passos lá e veja se você obtém um aumento significativo de velocidade. InnoDB faz armazenam os valores de campo nas folhas de índice e permitem a cobertura de índices.

Agora, esperamos que você veja o seguinte ao explicar a consulta:
mysql> EXPLAIN SELECT date, time FROM events WHERE venid='47975' AND date>='2009-07-11' ORDER BY date;

id  select_type table  type  possible_keys        key       [..]  Extra
1   SIMPLE   events range date_idx, indexNameHere indexNameHere   Using index, Using where