在Mysql + Percona上查询真的很慢

时间:2016-06-13 04:13:33

标签: mysql sql performance database-administration

您好我被要求从joomla网站审核数据库。最重要的一个中有近250个表,另一个是同时工作的数据库,但这里的主要问题是查询速度慢。

在慢查询日志中,我们可以看到如下内容:

# User@Host: user @ localhost []  Id: 186330
# Schema: mainDB  Last_errno: 1160  Killed: 0
# Query_time: 92.095105  Lock_time: 0.232432  Rows_sent: 0
Rows_examined: 0  Rows_affected: 0
# Bytes_sent: 0
SET timestamp=1463917461;
SELECT *
FROM `tablename`
WHERE NOT(`option` LIKE'com_%');

这是该表的创建查询:

 CREATE TABLE tablename (
   id bigint(20) UNSIGNED NOT NULL,
   option varchar(255) DEFAULT NULL,
   option2 varchar(255) DEFAULT NULL,
   option3 varchar(255) DEFAULT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 ALTER TABLE tablename
 ADD PRIMARY KEY (id);

这是服务器的规范:

2 x 3ghz CPU cores, CentOS, 5 Gb Ram, 50 Gb SSD
Mysql 5.6
Server version: 5.6.29-76.2-log Percona Server (GPL), Release 76.2...

知道为什么慢查询?

1 个答案:

答案 0 :(得分:0)

EXPLAIN SELECT *
    FROM `tablename`
    WHERE NOT(`option` LIKE'com_%');

你可能会发现它说'#34;所有"。这意味着查询必须只扫描整个表。

桌子有多大?

" Rows_sent:0 Rows_examined:0"令人费解 - 结果集中确实没有行吗?也就是说,每个option都会以' com _'开头?他们真的需要运行该查询吗?

我没有看到优化查询的方法。我不认为INDEX(option)会有所帮助,但你可以试试。