select count(*)的时间太长了吧?

mysql> select  count(*) from num;
+----------+| count(*) |
+----------+|  9918530 |
+----------+1 row in set (59.18 sec)

这也太恐怖了吧?
我换成了sqlite3 ,2秒搞定。


胡子哥哥
浏览 3319回答 1
1回答

holdtom

不要听上面一些误导,让你count主键的,效果一样。因为mysql发现你count主键内部直接给你换成count(*)。因为不知道你的表结构和索引状况,所以我就只能猜测一下并给出建议:1.我猜测你用的应该不是myisam引擎,因为mysaim引擎下的count()是记录在schema表中,直接获取数字即可。如果你的count()带条件了,那么myisam也会变慢。2.看起来好像可能你用的应该是innodb引擎,你用count(*)是正确的选择,但是它就是慢。比较好的优化方案请参考加redis或者memcache缓存,如果不想引入新的存储结构,你可以通过在mysql中建立一个冗余字段来记录总数。你可以去读一下《高性能mysql》的相关章节。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL