SQL Server 使用join all优化 or 查询速度
比如:,master,test,表示该用户为test的下级代码,test登录后可以看到test名下的业务和所有下级代理的业务。相关表的结构如下:
user表大约10万条记录 |-uid-|-user-|----site------| |1|test|,master,| |2|user|,master,test,| product表大约30万条记录 |-pid-|-product-|-puser-| |1|order01|test| |2|order02|user| |3|order03|user|
优化前的SQL语句如下:
select*fromproductaspleftjoinuserasuonp.puser=u.userwhereuser='test'orsitelike'%,test,%'
不使用or单独查询时,都不超过100毫秒,排除索引的问题。既然单个没问题,两种结果不存在重复记录,可以考虑joinall优化。
优化后的语句如下:
select*fromproductwherepidin( selectpidfromproductwhereuser='test'joinall( selectpidfromproductaspleftjoinuserasuonp.puser=u.userwheresitelike'%,test,%' ) )
用户A名下共有4000+个业务,优化前优化前11359毫秒,优化后621毫秒
用户B名下共有12个业务,优化前优化前10359毫秒,优化后78毫秒
到此这篇关于SQLServer使用joinall优化or查询速度的文章就介绍到这了,更多相关SQLServerjoinall优化内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!