LIMIT 不停止扫描?

dengjianglang 2008-03-06 07:49:24
如果我要查从M行的数据用LIMIT M,它会不会当描到M条要的据就放弃查询了??
MYSQL 手册上写:
· 只要MySQL已经发送了需要的行数到客户,它将放弃查询,除非你正使用SQL_CALC_FOUND_ROWS。

但是用EXPLAIN SELECT * FROM tablename LIMIT 10;后发现rows是全表的行数(大于10),这是
不是说明SQL得到10行后还在扫表呢?那LIMIT不就是和HAVING功能一样了?只是.
然后用SELECT * FROM tablename LIMIT 10 ORDER BY id DESC;得到是最后10行的数据,而不是
想要的前10行的倒排序.这是不是更加说明了MYSQL查询了全部的行后才筛选了后10行出来呢?
用EXPLAIN SELECT * FROM tablename LIMIT 10 ORDER BY id DESC;rows一样是全表行数.

以上能不能说是LIMIT没有停止扫描?
那如果是这样的样我要怎么才能得前十行数后就放弃扫描?
...全文
101 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yifuzhiming 2008-03-11
  • 打赏
  • 举报
回复
学习
懒得去死 2008-03-09
  • 打赏
  • 举报
回复
你只要明白一句话就可以了

LIMIT子句可以被用于限制被SELECT语句返回的行数

至于其他的,自己EXPLAIN 一下有LIMIT 的和没有LIMIT 的区别就很明白了 。
dengjianglang 2008-03-07
  • 打赏
  • 举报
回复
那怎么解释SELECT * FROM tablename LIMIT 10 ORDER BY id DESC;得到是最后10行的数据这问题!
先排表再查询然后才LIMIT的??
懒得去死 2008-03-06
  • 打赏
  • 举报
回复
你还要知道的是:

数据库要规划查询所扫描的行数!
懒得去死 2008-03-06
  • 打赏
  • 举报
回复
LIMIT 是停止扫描了。不过你的EXPLAIN 结果表现的是没有用到索引的情况!

56,687

社区成员

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

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