MySQL-mysql数据库多表联接查询效率
以前一直以为利用mysql多表联接查询语句进行数据库查询的效率高于通过多条语句进行查询的效率。
这些天进入公司,组长说的完全相反,他说在程序执行时,90%的时间是用在数据库交互上,所以可以的话,进行多条语句查询,效率更高。这点我很怀疑,请教各位大神。
还有就是union的效率问题。将获取的结果分开查询,然后通过php程序计算结果快,还是通过union将结果连接提来的效率高?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
首先看mysql的执行计划 如果某些你期望的索引没有用到 可以使用强制索引 不停的看执行计划 慢慢调整语句
sql优化的基本原则是 尽量缩小结果集
有的时候 分成多条语句 是比较快的
在使用UNION的时候,数据库会分别查询三个表的内容,然后合并成一个虚拟表输出来
--这相当于读了数据表四次
而多条SELECT语句可以减少一次数据读取,而这一次数据读取就是UNION中的最后一步,也是数据量最多的一次,所以效率要比UNION更高!
你组长说的有一定道理的. <<高性能mysql>> 三版, <<Complex Queries Versus Many Queries>>. 但具体哪一种会更快, 不一定的... 自己测一下吧
在织梦还是discuz我忘了,官方手册中有一条说明,如果一个结果,可以分开多个select,就不要用联合查询。之前在培训的时候讲师也这样说过。导致我很长一段时间,尤其是用TP框架,都是分开查询的。但实际公司的情况是,不论是在瑞友,还是在宜信,大数据的情况下,完全不会考虑用多个SQL来搞定。
其实,个人倾向于联合查询,即可以锻炼联合查询能力,还可以让你对如何优化SQL有所了解。
至于效率,其实,分开查,很多时候效率比联合查询效率要高。但我不推荐。对你成长没什么帮助。