【问题标题】:mysql limit and offset in large table大表中的mysql限制和偏移量
【发布时间】:2016-02-25 13:45:05
【问题描述】:

我有一个包含 800000 条记录的表,我想从 100000 条记录中选择记录,限制为 10

我的查询是:

SELECT * FROM `customercsv` WHERE insert_status = 0 order by id  limit 10 OFFSET 100000 

但是记录是从 103474 开始的。

这里附上屏幕供您进一步参考。

【问题讨论】:

  • 100000到103474之间有记录吗?
  • 我不知道 10 万是众所周知的数字:10 万 === 100,000,所以您说的是 800,000 条记录,对吗?
  • @hjpotter92 3474 我会说,
  • @senthil 您删除了 3474 条 id 小于 100.000 的记录。因此,当您使用偏移量 100000 时,它将从 id 1003474 开始真正跳过 100000 行。
  • 这很奇怪 - id 是什么样的列?诠释? varchar?自动递增?

标签: mysql limit offset


【解决方案1】:

如果您想要从 id = 100000 开始的结果,请在 WHERE 子句中指定。

SELECT *
FROM `customercsv`
WHERE insert_status = 0
    AND id >= 1000000
ORDER BY id
LIMIT 10

您当前的查询,OFFSET 获取以下查询的数据:

SELECT *
FROM `customercsv`
WHERE insert_status = 0
ORDER BY id

然后,跳过前 100000 行并显示之后的 10 个结果。因此,有3474 行使得insert_status 不是0。您可以通过运行来确认这一点:

SELECT COUNT(1)
FROM customercsv
WHERE id <= 103474
    AND insert_status <> 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 2012-09-22
    • 1970-01-01
    • 2016-06-09
    • 2017-03-17
    • 2015-10-10
    相关资源
    最近更新 更多