我有一个 mysql 表,用于跟踪特定页面的 View :
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;
然而,这个查询似乎非常慢,因为我们获得了很多 View ,并且通过这个查询,mysql 最终检查表中的每一行。有没有什么简单的方法来优化查询?我认为我无法更改数据库中的列,尽管添加索引可能没问题。
最佳答案
解决方案是在 r_clock 上创建索引并停止在查询开头使用 %
。如果你使用"%-none"
,你将无法使用索引,也无济于事。
如果您可以更改查询(显然还有与之一起使用的数据)以在末尾添加 %
(例如 "none-%"
),则此将允许它使用索引并加快速度。
关于mysql - 优化 mysql 查询前 10 个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24064498/