MySQL 分页查询limit性能缺陷和优化方案 | 您所在的位置:网站首页 › mysql能分页查询吗 › MySQL 分页查询limit性能缺陷和优化方案 |
MySQL使用 limit 分页: limit m,n其中,m是偏移量,n是要查询的数量。 当偏移量m过大的时候,查询效率会很低。因为MySQL是先查出m+n个数据,然后抛弃掉前m个数据。 优化方法:可以通过子查询查出查出目标数据集合的第一个数据所在的行,然后用 >= 操作。 如下: SELECT * FROM articles WHERE id >= (SELECT id FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 1) LIMIT 10子查询在主键id上先查到第一个目标数据的id,然后外层查询根据这个id,使用 >= 方式获取10条数据。 因为主键id有索引,所以子查询速度很快。 对于有大数据量的mysql表来说,使用LIMIT分页存在很严重的性能问题。优化思想:避免数据量大时扫描过多的记录 为了保证index索引列连续,可以为每个表加一个自增字段,并且加上索引。 |
CopyRight 2018-2019 实验室设备网 版权所有 |