这两天手头的PHP项目又出了问题,当产品数据库达到3万多条的时候,复杂查询的速度慢的和牛一样,客户当然不接受也不会给什么好脸色.
虽然我也对SQL进行了一些优化,但是效果不明显.由于数据库是我的超弱项,结果只能请同事帮忙.
最后的一点总结是:
1. 使用VIEW有时候虽然方便,但是速度反而不如表的直接查询,哪怕是多JOIN几张表.
2. 一定不要忘了建索引!!!尤其在大数据量的情况下.尤其是那些关联表.
3. 适当时候,用EXISTS语法.尤其是那些不需要返回也不需要统计(count之类)或者有些只返回true/false的,只做判断条件的地方.EXISTS比JOIN表然后在WHERE中过滤的速度快. (好像很拗口,不过自己知道就行了,呵呵).
最后,经过同事的不懈努力,终于把执行速度从20s减少到了5秒左右.了不起!毕竟是牛人!
问题解决了,人自然也就轻松了.
(已经两天没有回去了,今天总算可以回去洗澡睡大床了!) HOHO...