面试题答案
一键面试- 优化策略:
- 基于主键或其他有序索引进行分页。例如,假设
users
表有一个自增主键id
,可以使用类似SELECT * FROM users WHERE id > (SELECT id FROM users LIMIT 10000, 1) LIMIT 10
的查询。
- 基于主键或其他有序索引进行分页。例如,假设
- 原理:
- 当使用
LIMIT offset, limit
这种方式时,MySQL需要从第一条记录开始扫描,跳过offset
条记录,然后再返回limit
条记录。随着offset
值的增大,扫描的数据量会线性增长,性能会变得很差。 - 而基于主键或有序索引的方式,数据库可以直接定位到需要的记录位置。上述示例中,先通过子查询获取到第10000条记录的
id
,然后主查询通过WHERE id >
条件直接从这个id
之后开始获取10条记录,减少了扫描的数据量,从而提高了查询性能。
- 当使用