在MySQL中使用LIMIT和OFFSET比返回完整的记录集更便宜吗?

The*_*ool 3 mysql sql limit offset

这可能是一个愚蠢的问题,但我只是对窗帘背后发生的事情感到好奇.

如果我想分页数据库记录,我可以使用LIMIT和OFFSET,或者只是获取所有记录,并使用更多代码推断我想要的记录.

我知道第二种选择绝对是愚蠢的,我只是想知道它是否更贵

如果我使用LIMIT和OFFSET将数据库抓住我要求的内容,或者将在内部获取与我的查询匹配的所有记录(甚至数十万),然后在内部使用起始索引(OFFSET)和结束索引(OFFSET + LIMIT) )获取所请求的记录子集?

我甚至不知道我是否用正确的词语来形容我所怀疑的,我希望有人可以解释一下.

谢谢!

Ste*_*rea 7

是的,由于两个原因,它会更贵.

1)Mysql将在内部进行优化,仅计算所需的行,而不是在内部全部检索它们.请注意,如果在查询中有顺序,则此优化要少得多,因为mysql必须匹配并对数据集中的所有行进行排序,而不是在找到限制中的第一个X时停止.

2)当返回所有记录时,它们都需要通过线路从数据库传输到应用程序服务器.这可能需要一些时间,特别是对于中型到大型数据集.