Собственно на днях занялся проверкой MySQL'а.
Среди рекомендаций mysqltuner'a, было следующее
Цитата:
-------- Recommendations -----------------------------------------------------
General recommendations:
Enable the slow query log to troubleshoot bad queries
Adjust your join queries to always utilize indexes
Variables to adjust:
join_buffer_size (> 128.0K, or always use indexes with joins)
Следуя рекомендациям включил slowquery.log вместе с записью запросов которые не используют индексы.
Код:
slow_query_log = 1
long_query_time = 10
slow_query_log_file = /var/lib/mysql/slowquery.log
log-queries-not-using-indexes
Среди запросов очень часто выводятся запросы вида
Код:
SELECT COUNT(cid) FROM contract_module LEFT JOIN module ON module.id = contract_module.mid LEFT JOIN contract ON contract.id = contract_module.cid WHERE module.name = 'wellpay' and (contract.date1 is null or contract.date1 <= now() ) and (contract.date2 is null or contract.date2 >= now() );
где меняется module.name.
Я так понимаю, что в данном запросе нет индексов на contract.date2.
Вопрос к разработчикам.
Стоит сюда постить подобные запросы, с тем, чтобы они были исправлены в новых обновлениях? Или забить на это?
Сам запрос выполняется достаточно шустро, т.е. вопросов к этому не возникает.
Код:
# Query_time: 0.000215 Lock_time: 0.000052 Rows_sent: 1 Rows_examined: 0 Rows_affected: 0 Rows_read: 1