2016-09-30 4 views
-1

У меня есть таблица с 500 тыс. Строк. У меня есть конкретная таблица, которая занимает очень много времени для запуска каждого запроса.Mysql query slow performance

Один из запросов является:

SELECT * 
FROM player_data 
WHERE `user_id` = '61120' 
    AND `opzak` = 'ja' 
ORDER BY opzak_nummer ASC 

opzak_nummer колонна является tinyint с номером.

EXPLAIN:

enter image description here

Есть ли способ, чтобы улучшить эту производительность запросов и полководца этого запроса/таблицы?

Имя таблицы - player_data и включает в себя около 25 столбцов, большинство из которых являются целыми числами со значениями статистики.

Индекс id AUTO_INCREMENT.

+0

Это вы используете какой-либо индекс. – khalid

+0

Вопросы производительности должны включать EXPLAIN ANALYZE и некоторую информацию о размере таблицы, индексе, текущем времени, времени ожидания и т. Д. Slow - относительный термин, и нам нужно реальное значение для сравнения. MySQL Также читайте [How-to-Ask] (http://stackoverflow.com/help/how-to-ask) – e4c5

+0

Объясните SELECT * FROM player_data WHERE 'user_id' = '61120' И' opzak' = 'ja' ORDER BY opzak_nummer ASC – khalid

ответ

1

Вам необходимо выполнить этот запрос, он изменит таблицу и добавит индекс. Вы можете прочитать более подробную информацию здесь http://dev.mysql.com/doc/refman/5.7/en/drop-index.html

ALTER TABLE pokemon_speler ADD INDEX index_name (user_id, opzak);

+0

Спасибо, все еще есть некоторые проблемы. Дайте знать в обсуждении – TheUnreal

0

Оптимальный индекс для этого запроса является любой из них:

INDEX(user_id, opzak, opzak_nummer) 
INDEX(opzak, user_id, opzak_nummer) 

Первые два столбца сделать фильтрацию; последний избегает таблицы tmp и сортирует, потребляя ORDER BY.

Какая комбинация колонок уникальна (кроме id)? Если это так, мы могли бы запустить его еще быстрее.

+0

'id - единственный уникальный. Я не получил первую часть вашего ответа, что такое INDEX (user_id, opzak, opzak_nummer) INDEX (opzak, user_id, opzak_nummer) 'и как мне избежать таблицы tmp? – TheUnreal

+0

Любой из этих индексов должен избегать таблицы tmp для запроса _that_. См. [_Cookbook_] (https://mariadb.com/kb/en/mariadb/building-the-best-index-for-a-given-select/) –