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

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;

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

猜你喜欢

转载自blog.csdn.net/qq_39153893/article/details/82082372