条件参数可多选(也可能为空)情况下如何优化大表查询速度?
查询一个表的时候比较慢
A表大概有1亿条的数据
有一个条件参数@CODE
可能是空,也可能是1234, 也可能是1234|4567|1111|1112......这个样子的
现在的做法是查询时在where加下面的条件
(ISNULL(@CODE,'')='' OR CHARINDEX('|'+A.CODE+'|','|'+@CODE+'|')>0)
主要因为要查询为空的情况,每次查询会耗时1-2分钟
因为会有好几个条件,所以一个存储过程就会耗时8分钟以上了,比较难接受。
用等号或者把判断时候为空去掉,查询会快很多...但是不符合实际需求
本人算是SQL新手,还请大家指教一下。
A表大概有1亿条的数据
有一个条件参数@CODE
可能是空,也可能是1234, 也可能是1234|4567|1111|1112......这个样子的
现在的做法是查询时在where加下面的条件
(ISNULL(@CODE,'')='' OR CHARINDEX('|'+A.CODE+'|','|'+@CODE+'|')>0)
主要因为要查询为空的情况,每次查询会耗时1-2分钟
因为会有好几个条件,所以一个存储过程就会耗时8分钟以上了,比较难接受。
用等号或者把判断时候为空去掉,查询会快很多...但是不符合实际需求
本人算是SQL新手,还请大家指教一下。
...全文


