摘要: 众所周知,范围查询 IN 是先执行子查询,然后再做主查询的条件,EXISTS 是先执行主查询,然后逐条判断子查询的返回。很多人都是从这里学到了小表驱动大表,进而总结出 IN 小表 EXISTS 大表的至理名言。但是实际情况呢? 现在有一张表 A ,大约 600 条数据,另一张表 B,大约 355w 阅读全文
posted @ 2022-07-12 15:10 远走不高飞 阅读(82) 评论(0) 推荐(0)
摘要: 万丈高楼平地起,不要小看了任意一根稻草! 信息表user_profile,包括设备,性别,年龄,学校,其中设备id 是唯一键,做用户唯一标识 还有一个用户答题情况表question_practice_detail,包括设备,题目,答题结果 现在需要统计每个学校的答题人的平均答题情况。 考虑到每个学校 阅读全文
posted @ 2022-05-17 13:12 远走不高飞 阅读(42) 评论(0) 推荐(0)
摘要: 万丈高楼平地起,不要小看了任意一根稻草! 现有一个学生简介表,记录了每一个学生的年龄,性别,学校,以及30天内活跃天数,发帖数量,回答数量等信息,数据如下: 其中,gender 性别包括 male 男,female 女,active_days_within_30 是30天内活跃天数,question 阅读全文
posted @ 2022-05-16 11:12 远走不高飞 阅读(57) 评论(0) 推荐(0)
摘要: 在mysql 里提供了一些有意思的日期小函数,虽然多,但实用的没几个,比如下面这个栗子 定义一张题目练习记录表,其中 question_id 代表题目,date 代表日期 CREATE TABLE `question_practice_detail` ( `id` int NOT NULL, `de 阅读全文
posted @ 2022-05-13 17:50 远走不高飞 阅读(73) 评论(0) 推荐(0)
摘要: 在 mysql 查询时,往往需要对现成的数据列进行处理,得到所谓的行,这就是列转行。 下面举个栗子,有一个产品表,定义如下: CREATE TABLE `products` ( `id` int(5) NOT NULL, `store1` int(5) DEFAULT NULL, `store2` 阅读全文
posted @ 2022-05-13 11:46 远走不高飞 阅读(23) 评论(0) 推荐(0)
摘要: 大分页查询说的是分页中比较靠后的查询,小白可能觉得在mysql 中查询第 1 页和第 100000 页没有什么不同,其实不然。分页越靠后,mysql 需要花费大量的时间扫描那些需要跳过的数据,简单查询的效率只会更低。 现在有一张表A ,共 65 列,数据行有 350w+ ,我们按照时间排序后分页,时 阅读全文
posted @ 2022-05-04 09:12 远走不高飞 阅读(77) 评论(0) 推荐(0)
摘要: 最近田老师面试的时候遇到了成绩排名的问题,在这里给他解答记录下。 成绩排名分为连续和不连续两种,即成绩相同排名相同,成绩相同但排名不同。由于 mysql 并没有 oracle 那样可以直接获取行号的函数,因此需要自定义参数来实现。日常一般也用不到自定义参数,所以了解即可~ 新建成绩表,插入数据如下: 阅读全文
posted @ 2022-04-24 14:34 远走不高飞 阅读(158) 评论(0) 推荐(0)
摘要: MySql 的连接分为左连接,右连接,内连接,在实际使用时经常使用的是左连接和内连接,即LEFT JOIN 与 JOIN 。基本的操作就不多说了,在看别人的代码或者面试的时候可能会发现一个奇怪的现象,那就是连接后面跟着多个 ON 条件,类似这样 SELECT * FROM A LEFT JOIN B 阅读全文
posted @ 2022-04-20 11:22 远走不高飞 阅读(261) 评论(0) 推荐(0)