[求助] 一条SQL 语句的优化

kuibobo 2017-12-25 12:59:47
SELECT *
FROM tab c
WHERE c.status = 1
ORDER BY c.id ASC
LIMIT 0, 20

这个执行有50s+,检索出来1条符合条件的数据, 这个表5.7g,1896002条记录

有啥好的优化方案么,那么多的重复数据,+索引好么?




...全文
246 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
祥子爱游戏 2017-12-25
  • 打赏
  • 举报
回复
千万级别的数据mysql还是可以的,使用explain来查看执行计划,然后尝试使用index、partion方案来调试。
Andy__Huang 2017-12-25
  • 打赏
  • 举报
回复
老趋出来活动啦!
zjcxc 2017-12-25
  • 打赏
  • 举报
回复
满足条件的数据占比大,考虑 status+id 的复合索引,否则考虑 id+ status 的复合索引 如果表的数据总量不是非常大的话,复合索引可以改成单键索引( 只保留第一列)
听雨停了 2017-12-25
  • 打赏
  • 举报
回复
在id上建立一个聚集索引就不会那么慢了,再在status上建一个非聚集索引就更不慢了

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧