mysql优化 - MySQL SELECT COUNT(*) 花费6秒,如何优化
巴扎黑
巴扎黑 2017-04-17 13:03:28
0
8
488

服务器阿里云ECS,centos, mariadb,数据表 info 现有13万条数据,然后执行了下面这一段:

sql#status是表info的一个索引字段
SELECT COUNT(*) FROM `info` WHERE `status`='1' #status=1为10万数据

执行花费 6987.0 ms 有时候会更长(尤其是第一次的时候)。如何优化?

阿里云ECS 1G读写性能

[root@aliyun basic]# dd if=/dev/zero of=test bs=64k count=4k oflag=dsync
4096+0 records in
4096+0 records out
268435456 bytes (268 MB) copied, 23.0049 s, 11.7 MB/s

**对比linode 1024 1G***

[root@linode ~]# dd if=/dev/zero of=test bs=64k count=4k oflag=dsync
4096+0 records in
4096+0 records out
268435456 bytes (268 MB) copied, 3.86091 s, 69.5 MB/s

后续 2015-6-30
我将内存增加到了2G之后,查询明显变快了!不超过1s!
关于一些回复说status加索引,肯定加了,不然怎么跑得动,直接504的好不
吐槽一下很多回复的本身就是错误的,我这两天找了很久,阿里云的磁盘IO性能确实是很低的。
阿里云后台管理,磁盘IO的平均是 0.015MB/s。使用fdisk -l 阿里云ECS是 512 byte,Linode 是 4094 byte。其实最根本问题还是IO问题,如果真的说将status另外独立表,这也是无济于事的,维护成本将增加。阿里云是普通磁盘,Linode 是SSD,确实是不具备可比性。

巴扎黑
巴扎黑

reply all(8)
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!