我正在使用MySQL Server版本:5.5.8-log MySQL社区服务器(GPL)
我想记录不使用INDEX的查询,也很慢!
我在这里复制我的my.ini设置。
的[mysqld]
端口= 3306
log =“E:/wamp/logs/genquery.log”
log_slow_queries
long_query_time = 1
slow_query_log = 1
slow_query_log_file =“E:/wamp/logs/slowquery.log”
我需要做些什么改变?
答案 0 :(得分:32)
log_queries_not_using_indexes =1 //(or Yes)
(来自mysql)
答案 1 :(得分:6)
log_queries_not_using_indexes
Command-Line Format --log-queries-not-using-indexes
Option-File Format log-queries-not-using-indexes
Option Sets Variable Yes, log_queries_not_using_indexes
Variable Name log_queries_not_using_indexes
Variable Scope Global
Dynamic Variable Yes
Permitted Values
Type boolean
是否将不使用索引的查询记录到慢速查询日志中。见5.2.4节,
答案 2 :(得分:5)
对Linux用户可能有用。 (Testet:Ubuntu 16.04)
在终端获取root并编辑mysql配置
su
vim /etc/mysql/conf.d/mysql.cnf
[mysqld]
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow-query.log
long_query_time=1
log_queries_not_using_indexes=1
添加日志文件并重启mysql服务器
touch /var/log/mysql/slow-query.log
chown mysql:adm /var/log/mysql/slow-query.log
chmod 640 slow-query.log
service mysql restart
使用SQL查询测试慢速日志记录
/* Activate query log - Maybe useful to show errors (not necessary) */
SET GLOBAL SLOW_QUERY_LOG=ON;
/* Check if slow query log is working */
SELECT SLEEP(2);
答案 3 :(得分:1)
除了a1ex07的答案,您还可以使用shell命令mk-query-digest
输出正在运行的查询的报告,而不使用日志。
请参阅完整的方法:http://www.xaprb.com/blog/2009/08/18/how-to-find-un-indexed-queries-in-mysql-without-using-the-log/
如本文所述,还可以按--group-by tables --report-format profile
快速检测未编制索引的查询非常有用。