sql视图加where之后查询速度很慢-----sql优化(持续更新中)

所有分析都是具体问题具体分析的,情况不适合的同学另找解决方案。

案例1:select s.row_id,s.money  from v_school s where s.money>1000 (其中v_school是视图)这个查询很慢,一开始搞不懂为什么,后来发现s.money是在视图里面经过复杂运算得到的。

原因解释:因为v_school查出的每条数据,每次都会比较where后面的s.money>1000,而这个视图数据是百万级的,所以得比较上百万次复杂的s.money,能不慢吗。

解决办法:select *  from (select s.row_id,s.money  from v_school s) ss where ss.money>1000;

其实这个解决办法也很简单,就是换个思路,把视图数据先查出来,然后在这些数据筛选,这样就快多了,数据也很快查出来了。

 

案例2:多表left join很慢半天查不出来,解决办法换成(select  name from table2 where table2.id=table1.tabledid),name1  from table1。改了之后几秒出来了,极大提高了速度,思路就是子查询。

 

    原文作者:倾世如歌如诗
    原文地址: https://blog.csdn.net/qq_39153893/article/details/82082372
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞