1. mysql分页查询语句
limit 3,10 从第4条数据开始取10条;
limit n ,m这种语句的意思就是先去读取前n条数据 然后舍弃,然后在读取后面的m条。 在数量量较大的时候,limit 2000
10,先读取前2000条然后舍弃,然后读取2001 到2010 条数据。这样的话偏移量就很大,为了提升效率需要进行优化分页sql
SELECT
content,
uid,
title,
maketime,
qid,
type,
list_style
FROM
play_question
WHERE
qid IN (
SELECT
qid
FROM
(
SELECT
qid
FROM
play_answer a
GROUP BY
qid
ORDER BY
count(anid) DESC
LIMIT 0,
3
) a
)
2 第一种优化 用内查询
因为子查询进行的查询是通过索引进行的,索引效率会比较快,通过子查询先确定分页查询的初始位置;
select * from table a where a.id>=(select id from table b order by id limit 2000 ,1)
order by a.id limit 10;
3.只读索引的方法
第一步是 是通过索引进行查询,而不查询其他数据,然后根据得到的所有的id,进行数据的查询。
select * from table a
join (select id from table b order by id limit 2000 ,10)
useiing(if)
4. 我们使用的策略就是 先判断页数,页数少的时候用limit n,m 页数多的时候 用子查询 或者只读索引的方法。
5.记录上次返回的位置
select * from table a where a.id>2000 limit 10;
6.建立索引 对order by进行设置索引。