零碎小笔记
1、去重 distinct
去重关键字,是以一整行数据为主来进行去重【一整行数据被称为一个元组】
select distinct university,gender from user_profile;
-- 去重结果如下所示:
北京大学 male
复旦大学 male
北京大学 female
浙江大学 female
2、limit关键字的使用
select * from user limit 8; -- 取前8条数据
select * from user limit 4,6; -- 取第4条数据后面的6条数据(意思是从第5条数据开始取)
select * from user limit 4,-1; -- 取第4条数据之后的所有数据。
select * from user limit m,n; -- 偏移m条数据取n条数据,当n=-1时,表示取到最后一条数据结束(全取完)
limit也可以配合offset关键字使用
select * from user limit n offset m; -- 跳过m条数据取n条数据(offset指偏移量)
注意:offset的量不能太大,当offset太大时,会影响查询效率
select b from T where c<1000 limit 2000000,500;
优化之后:
select b from (select a from T where c<1000 limit 2000000,500) ta inner join T tb on ta.a=tb.a;
优化思想:将原先大偏移量的查询语句变成一张临时表,再与原先的数据进行内连接,原理是使索引的使用情况发生了变化