mysql中 关于COUNT 的用法怎么用才能得到我想要的!

mysql中 关于COUNT 的用法怎么用才能得到我想要的!,第1张

SELECT idsite, COUNT( *)

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倍左右的差距。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/8680889.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存