1.传统Limit
SELECT * FROM staffs WHERE age > 35 LIMIT 10;- 会持续扫描表直到找到10条符合条件的记录
- 如果表有1000万行,可能需要扫描到最后一行
- 消耗资源大,执行时间长
2.使用 LIMIT ... ROWS EXAMINED 的查询
SELECT * FROM staffs
WHERE age > 35
LIMIT 10 ROWS EXAMINED 1000;- 只扫描最多1000行就停止
- 如果1000行内找到10条记录,提前返回
- 如果1000行内没找到10条记录,也会停止并返回已找到的记录
- 保护数据库资源,避免全表扫描
优势
你已经预判到公司里超过35岁的程序员屈指可数,最多扫描1000行就可以查出结果了,而不是整个表。这可以显著减少 CPU 和 I/O 资源的消耗。
















