专栏名称: 顶尖架构师栈
分享业务架构、技术架构、系统设计方案,以及微服务架构源码,提供业务场景答疑
今天看啥  ›  专栏  ›  顶尖架构师栈

【第1期】简聊limit 0,100和limit 10000000,100一样吗

顶尖架构师栈  · 公众号  ·  · 2024-08-30 07:30

文章预览

正如题目所问。 其实不一样的。这是 MySQL 中典型的深度分页问题。 MySQL 的 LIMIT m n 工作原理是先读取前 m+n 条记录,再抛弃前 m 条,然后返回后面的 n 条数据。因此,当 m 值增大时,偏移量也增大,性能表现就会变差。 因此, LIMIT 10000000,100 要比 LIMIT 0,100 的性能差得多,因为它需要先读取 10000100 条数据,然后再抛弃前 10000000 条。 limit 优化 通常,在查询数据时,如果已经明确知道所需行数,建议在查询语句中使用 LIMIT ,而不是先检索整个结果集再丢弃不需要的数据。 尽管我们前面提到,在深度分页时,MySQL 也会先检索全部数据再丢弃,但 MySQL 对 LIMIT 也进行了一些优化。然而,以下优化前提假设在使用 LIMIT 时没有使用 HAVING 语句。 MySQL 通常更倾向于执行全表扫描,但如果您使用 LIMIT 只查询少量记录,MySQL 在某些情况下可能会选择使用索引。 如 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览