日期:2014-05-17  浏览次数:20968 次

如何优化多表联合查询速度?
一个update联合了10个表,平均每个表数据大约2万行,关联的字段已经建立了索引,但是查询依旧较慢,时间为62秒。上面要求优化到5秒以下,我就想骂人:我认为,数据量在50万,甚至百万以下的系统,但凡查询需要关联6个表以上的数据库设计,(也可能涉及到软件设计)都是狗屎。更何况是逻辑简单的小系统。

但我无能为力,也可能是孤陋寡闻,无论如何,只能按时完成任务,求高手指教优化方法!

------解决方案--------------------
那些整天在别人问题之外以说唱教授身份出现的角色,然后以针砭时弊或愤世嫉俗的姿态叫叫嚷嚷,其实并没有给你什么帮助。因为,当你说法律,他和你谈经济,当你说工作,他和你扯事业。

所以,对于善于跑题的叫兽们,作为寻求真实客观问题的求问者,最好置之不理。


你这个问题可以如此考虑,
一般情况下:
根据sql2005的display estimated execution plan:


查找出比较耗时的节点,如果不是索引查询(index seek,注意(index scan)不是索引查询,依旧是全表遍历(table scan)!),那么就先针对关联的字段建立索引.如果已是索引查询,参考下图:


如果这样还没起到效果,则可能是你要查询的结果数据量比较大,建议参考caozhy 版主所说的分表分库、使用数据缓存等。