mysql视图查询慢解决方法

     执行下面语句发现查询数据非常慢,要30多s:

        SELECT t0.* FROM Vsyslog t0 where message like '%Username = teddy%' LIMIT 0,10

(其中Vsyslog 是视图)这个查询很慢,一开始搞不懂为什么,后来发现message 是在视图里面经过复杂运算得到的。

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

解决办法:select *  from (select s.endTm,s.message  from Vsyslog s) ss where ss.message like '%Username = teddy%'

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值