新零售-分页查询优化

一、MySQL 索引的应用原理

我们给某一个字段创建索引,那么数据库就会给这个字段创建一个隐藏的索引表,结构是二叉树。

记录的值就是字段值和主键值,当我们用索引字段作为查询条件,MySQL就会在二叉树里面快速定位到数据,然后提取到主键的信息,再去关系表里边根据主键值来查找数据。

索引就是这么完成查询加速的。

 

二、优化分页查询
原查询语句:select * from  test limit 5000000,100

1、优化方式一(主键连续情况下)

select * FROM test where id > 5000000 limit 100

2、优化方式二(主键不连续情况下)

select  t.*  from test as t join (select id from test order by id  limit 5000000,100) as tmp on t.id=tmp.id

使用这种方式优化时一定要注意,如果你没有order by,则很可能优化后查询出来的结果和优化前查询出来的结果是不一致的,所以,添加order by 主键是非常必要的

3、优化方式三(业务上限制不可以查询早期数据)

比如如果我们在百度浏览器搜索一个关键词,会发现最多只能查询到75页