1.提出问题
我这两天一直在纠结表与表的关联查询,如果数据量大,究竟是使用子查询还是使用关联查询,并且上网查了一些资料
然而并没有头绪,而且耽误了一点工作。非常烦恼。
2.解决方案
其实JOIN 和 子查询的操作在不同的情况下应用的结果也不一样。
不能一概而论。其实跟索引,表结构,复杂程度,都有一些关系。
所以网上很多的答案并不是针对具体sql场景给出,未必就能找到适合你的方案。
然而navicat就有一个现成的功能。除了可以在sql执行之后看到时间(这个指标未必准确,根据数据数量大小产生结果不好预测),如下
所以说,看执行时间并不是最好的标准,那么我们可以怎么去查看sql执行的效率的一些因素。
navicat界面给出了“解释”功能,当我们执行完sql,点击“解释”就可以看到sql执行相关的参数。
最值得注意的就是type。根据type我们可以知道查询方式:全表查询还是索引查询或者其他。
3.顺便补充
在很多场景下面LEFT JOIN会比子查询更有效率,比如下面的执行解释:
所以当你对一个sql产生疑问的时候,不妨查询一下navicat。
4.资料备忘贴
参考地址
解释参数:https://blog.csdn.net/windanchaos/article/details/78806462
navicat官网:https://www.navicat.com.cn/products#navicat-data-modeler
为防止地址丢失,将信息贴在下面:
note that:长屏截图工具:fireShot