我有一个mysql表,用于跟踪特定页面的视图:
CREATE TABLE `views` (
`time` datetime NOT NULL,
`remote_host` varchar(255) default '',
`r_clock` varchar(255) default '',
`r_timezone` varchar(255) default '',
`referer` varchar(255) default ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8
我为获得前10名而编写的查询是:
select count(*) as count, r_clock
from views where r_clock <> "html5" and r_clock not like "%-none"
group by r_clock
limit 10;
但是,这个查询似乎非常慢,因为我们获得了很多视图,使用此查询,mysql将检查表中的每一行。有什么简单的方法来优化查询吗?我认为我无法更改数据库中的列,尽管添加索引可能是可以的。
发布于 2014-06-05 15:55:29
解决方案是在r_clock上创建索引,并在查询开始时停止使用%
。如果您使用"%-none"
,您将无法使用索引,它也不会有帮助。
如果您可以将查询(以及使用它的数据)更改为末尾的%
(例如,"none-%"
),这将允许它使用索引并加快它的速度。
https://stackoverflow.com/questions/24064498
复制相似问题