mysql——关于join的一些知识
1、select * from a join b,与select * from a,b
结果是相同的,都是两张表的笛卡尔积;笛卡尔积的作用,生成时间序列、模拟循环等。
2、jion、inner join 和cross join
在inner join 没有加on条件时,join、inner join 和cross join没有区别
xxx join xxx,就等于 xxx inner join xxx,也等于 xxx cross join xxx,得到的结果都是两张表数据量相乘的笛卡尔积。例如a表有10条数据,b表有100条数据,jion之后的结果就是1000条数据。
inner join on,on语句的执行是在jion语句之前的,也就是说两张表数据行之间进行匹配的时候,会先判断数据行是否符合on语句后面的条件,再决定是否join
select * from a,b where xxx,会在内存中先生成一张数据量比较大的笛卡尔积表,增加了内存的开销
(1)以小表作为驱动表(inner join前面的为驱动表),大表作为被驱动表;
(2)为大表的条件字段创建索引;
(3)增大join_buffer_size。
5、一个简单的sql解析:
首先看a表数据,只是添加了一个序列号:
再看b表数据,同样也是添加序列号:
然后使用了select * from a,b where xxx的方法,进行join,得到笛卡尔积,并进行了条件筛选:
由此可知,该条sql是求,某个设备的power_level变化时间差,再将相同power_level的时间差进行求和。
参考:
https://zhuanlan.zhihu.com/p/133539313
https://www.zhihu.com/question/34559578/answer/2287459774
https://blog.csdn.net/qq_19800265/article/details/103401272
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具