SQL多条件优化查询

0
有个表tb_Plan我现在想查询里面TypeVal(varchar)值为'A','C','E','P'的数据。
目前知道两种查询方法 
一种是用CHARINDEX查询
select top 200 TypeVal from tb_Plan where CHARINDEX(TypeVal,'ACEP',0)>0,
另一只是用in查询
select top 200 TypeVal from tb_Plan where TypeVal in('A','C','E','P')
哪种查询方式更好或者其他解决方案,请详细说明,谢谢。
已邀请:
1

gogodiy - 天善智能数据库专家、Tableau爱好者 2015-10-26 回答

除非数据量很小,否则不建议使用CHARINDEX,IN等语法,还是建议将需要匹配的值保存到临时表,创建合适索引后,使用表关联方式进行查询。
MSSQL2008R2及以上版本,也可以使用CTE先保存查询匹配值,然后关联CTE进行查询。
0

- 取是能力,舍是境界 2015-10-26 回答

如果查询条件个数不多可以用in,如果条件个数比较多,建议转成临时表或表变量和主表关联进行数据过滤。
0

老头子 - 专注是唯一的捷径 2015-10-26 回答

in
 

要回复问题请先登录注册