Недавно я проверял свои системные журналы и заметил, что некоторые из моих запросов очень медленные.
У меня есть таблица, в которой хранятся пользовательские активности. Структура таблицы id (int), user (int), type (int), object (varchar), extra (mediumtext) and date (timestamp)
.
Также у меня есть индекс только для id (BTREE, unique)
.
У меня проблемы с производительностью для следующего запроса;
SELECT DISTINCT object as usrobj
from ".MV15_PREFIX."useractivities
WHERE user='".$user_id."'
and type = '3'
limit 0,1000000"
Вопрос в том, должен ли я индексировать user
так же, как id
? Какой должна быть лучшая практика, которой я должен следовать?
Эта таблица активно используется и содержит более 500 000 строк. И на сайте в среднем 2k ~ одновременных пользователей.
Причина, по которой я задаю этот вопрос, заключается в том, что я не очень хорош в управлении БД, а также у меня медленная проблема с запросом к другой таблице, имеющей надлежащие индексы.
Заранее спасибо за предложения.
Примечание:
Результат mysqltuner
Общие рекомендации:
Reduce or eliminate persistent connections to reduce connection usage
Adjust your join queries to always utilize indexes
Temporary table size is already large - reduce result set size
Reduce your SELECT DISTINCT queries without LIMIT clauses
Consider installing Sys schema from https://github.com/mysql/mysql-sys
Переменные для настройки:
max_connections (> 768)
wait_timeout (< 28800)
interactive_timeout (< 28800)
join_buffer_size (> 64.0M, or always use indexes with joins)
(я установлю max_connections
> 768, не совсем уверен насчет тайм-аутов , и поскольку я читаю темы / предложения в Stackoverflow, я думаю, что не должен увеличивать размер join_buffer_size
, но я ' Буду очень признателен за отзывы об этих переменных.)
РЕДАКТИРОВАТЬ - ПОКАЗАТЬ ПОКАЗАТЬ результат;
+--------------------+------------+-----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+--------------------+------------+-----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| ***_useractivities | 0 | PRIMARY | 1 | id | A | 434006 | NULL | NULL | | BTREE | | |
| ***_useractivities | 1 | user_index | 1 | user | A | 13151 | NULL | NULL | | BTREE | | |
| ***_useractivities | 1 | user_type_index | 1 | user | A | 10585 | NULL | NULL | | BTREE | | |
| ***_useractivities | 1 | user_type_index | 2 | type | A | 13562 | NULL | NULL | | BTREE | | |
+--------------------+------------+-----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+