1.order by 查询效率低下,导致查询语句十分缓慢。
a.order by 尽量+索引字段
b.order by 索引失效,一般是由于select 的字段中存在非索引字段。
c.复杂的聚合查询语句,尽量拆分成简单的单查询语句。
2.limit 用在in或者其他子查询中的方法
可以将查询结果包装成新的子查询,从而使用limit,示例如下:
原查询语句 :
SELECT stu.name,stu.age,stu.sex,cou.name,cou.score
FROM student stu
WHERE stu.id
IN ( select stuId from course cou where stu.id = cou.stuId
order by cou.score limit 0,10
)
执行该语句,应该会报错,limit不应该用于in、any、some等等之中。
改造以后:
SELECT stu.name,stu.age,stu.sex,cou.name,cou.score
FROM student stu WHERE stu.id
IN (
select id from(
select stuId from course cou where stu.id = cou.stuId
order by cou.score limit 0,10
) as temp
)