gpt4 book ai didi

mysql - 在 SQL 中,什么是更快的 : LIMIT . .. OFFSET 或范围查询?

转载 作者:行者123 更新时间:2023-12-01 23:43:37 27 4
gpt4 key购买 nike

给出

  • 以下架构:

    CREATE TABLE employees (
    name CHAR,
    PRIMARY KEY id INT
    );
  • 表格按id排序

  • 表中有100个1-100的唯一id。


例子

| name    | id |
|---------|----|
| Lynne | 1 |
| Johnny | 2 |
| D'Andra | 3 |
| Kimmel | 4 |
| ... |

目标

获取 10 个 ID 大于或等于 3 的人。


问题

使用select name from employees order by id limit 10 offset 3会不会更快或 select name from employees where id >= 3 and id <13 order by id ,为什么?


到目前为止我已经检查过的内容

Does adding 'LIMIT 1' to MySQL queries make them faster when you know there will only be 1 result? : 这表示使用 limit 比不使用 limit 快,但它没有将其与范围查询进行比较。

Select query with offset limit is too much slow :这表示偏移量通常很慢,因为它需要遍历所有行才能到达偏移量。不讨论使用offset x是否更慢比id >= x对于任何整数 x?

最佳答案

你的两个查询不一样。只有当您知道 id 列没有间隙和(并且没有重复,但这对 id 有意义)时,它们才相同。

对于小的偏移量,对于这样一个简单的查询应该没有什么区别。不过,我确实认为 MySQL 会读取offset 查询的所有 结果,然后在达到偏移量时开始返回结果。也就是说,它实际上是对行进行计数,然后输出偏移量之后的行。

where 子句应该使 MySQL 直接转到索引中的正确记录。对于更大的结果集,这应该更快。

关于mysql - 在 SQL 中,什么是更快的 : LIMIT . .. OFFSET 或范围查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64651347/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com