FROM `piwik_log_link_visit_action`
WHERE server_time LIKE '2014-02%'
GROUP BY idsite
这样就可以的,就是少个逗号
没问题的
count(*)在数据多的时候非常慢。
优化方法
这要从InnoDB的索引说起, InnoDB的索引是B+Tree。
对主键索引来说:它只有在叶子节点上存储数据,它的key是主键,并且value为整条数据。
对辅助索引来说:key为建索引的列,value为主键。
这给我们两个信息:
1. 根据主键会查到整条数据
2. 根据辅助索引只能查到主键,然后必须通过主键再查到剩余信息。
所以如果要优化count(*) *** 作的话,我们需要找一个短小的列,为它建立辅助索引。
在我的例子中就是status,虽然它的”severelity”几乎为0.
先建立索引:ALTER TABLE test1 ADD INDEX (status)
然后查询,查询速度提升近13倍。
参考:网页链接
如果索引是str这一列,结果又会是怎么样呢?
先建立索引: alter table test1 add index (str) 也很快,但是比起status这列还是有着1.5倍左右的差距。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)