MySQL查询速度很慢.索引列上的计数(*)
该表位于InnoDB表中.以下是一些可能有用的信息.
解释查询在那里给我结果.但实际的查询已经运行了很长一段时间.我怎样才能解决这个问题?我究竟做错了什么? 我基本上需要弄清楚这张桌子里有多少张照片.最初编码器有一个查询,检查WHERE照片IS NOT NULL(耗时3小时),但我更改了此查询以检查id列,因为它是主键.我预计会有一个巨大的性能提升,并期待在一秒钟内得到答案,但似乎并非如此. 我需要对数据库进行哪种优化?我认为查询很好,但如果我错了,请随时纠正我. 编辑:mysql Ver 14.14 Distrib 5.1.52,redhat-linux-gnu(x86_64)使用readline 5.1 P.S:我为了一些疯狂的原因重新命名了桌子.我实际上没有名为db的数据库和名为table的问题表. 最佳答案 “长”多久了?这张表中有多少行?MyISAM表跟踪它有多少行,因此一个简单的COUNT(*)将总是几乎立即返回. 另一方面,InnoDB的工作方式不同:InnoDB表不跟踪它有多少行,所以当你COUNT(*)时,它实际上必须去计算每一行.如果您有一个大表,这可能需要几秒钟. 编辑:尝试COUNT(ID)而不是COUNT(*),其中ID是一个没有NULL的索引列.这可能会更快. 编辑2:如果你在longblob中存储文件的二进制数据,你的表将是庞大的,这会减慢速度. 可能的解决方案: >使用MyISAM代替InnoDB. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Mysql入门mysql字段类型char与varchar区别
- Mysql学习傻瓜式用Eclipse连接MySQL数据库
- Mysql应用mysql查询语句in与exists区别与性能分析
- Mysql入门在Win下mysql备份恢复命令
- Mysql应用Ubuntu15下mysql5.6.25不支持中文的解决办法
- Mysql入门mysql命令行中执行sql的几种方式总结
- php – 交互式SVG – 学习资源?
- Mysql必读Mysql 数据库常用备份方法和注意事项
- django.db.utils.InternalError: (1153, "Got a packet
- Mysql入门mysql数据库连接池配置教程