博客仅作为记录,有误部分请在评论区指正,谢谢!!
👨💻作者:东隅桑
💕:东隅已逝,桑榆非晚。
题目一
解答一
# 方法一(效率低)
select
*
from
user_profile;
# 方法二(效率较高)
select
id,
device_id,
gender,
age,
university,
province
from
user_profile;
题目二
解答
select
device_id,
gender,
age,
university
from
user_profile;
题目三
解答三
#方法一(distinct 去重)
select
distinct university
from
user_profile;
#方法二(group by 分组)
select
university
from
user_profile
group by
university;
distinct 可去重原理
–>distinct需要将column列中的全部内容都存储在一个内存中,可以理解为一个hash结构,key为column的值,最后计算hash结构中有多少个key即可得到结果。
group by 可去重原理
–>group by的方式是先将column排序。而数据库中的group一般使用sort的方法,即数据库会先对column进行排序。而排序的基本理论是,时间复杂为nlogn,空间为1.,然后只要单纯的计数就可以了。优点是空间复杂度小,缺点是要进行一次排序,执行时间会较长。
distinct 和 group up的效率区别
–>在重复量比较高的表中,使用DISTINCT可以有效提高查询效率,而在重复量比较低的表中,使用DISTINCT会严重降低查询效率。所以并不是所有的DISTINCT都是降低效率的,当然你得提前判断数据的重复量。
题目四
解答四
#limit a, b ( a表示起始位置 , b表示从起始位置开始一共要取多少位数 )
select
device_id
from
user_profile
limit
0,2;