mysql count 速度慢

mysql count 速度慢,第1张

第一,建立搜索条件对应的索引

第二,采用物化视图,提前将数据查询出来

第三,升级SQL版本,SQL2008比SQL2000的速度提高是很多的

第四,如果表有大容量的字段,如 图片,文档,应该考虑用FTP来做,不是把数据放在数据库第五,提高电脑性能

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

只记录一列的总条数会快点count(列名)。或者where条件改为city like '%扬州' or city like '扬州%',city like '%扬州%' 是进行全表查询,修改后是两个范围的扫描,性能也能提高一些,你试一试。还可以使用索引。


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

原文地址: http://outofmemory.cn/zaji/8366165.html

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

发表评论

登录后才能评论

评论列表(0条)

保存