在where子句中的150多个不同条件中选择查询

时间:2017-10-28 11:54:41

标签: sql-server select where-clause

我的SQL Server数据库中有一个包含超过400000行的表,我想选择以.txt文件中大于150个名称的多个名称开头的全名,那么查询将如何在C#中我的命令。我可以用这种方式写它但它会太长并且可能会造成延迟或某种错误!

select * 
from tableName 
where fullName like '%Jack%' 
   or fullName like '%Wathson%' 
   --.... and so on 

1 个答案:

答案 0 :(得分:1)

评论太长了。

首先,SQL Server可以处理很长的查询。我创建了至少150k字符的查询,它们可以正常工作。限制远远大于此。

其次,你是正确的,一堆like语句需要很长时间。 like有开销。

第三,你的模式不符合你的陈述。如果您希望 start 的名称具有特定模式,则从模式的开头删除通配符。这样做的另一个好处是,SQL Server可以在FullName上使用常规索引进行匹配。

最后,如果您真的在查看初始字符串,那么您可能需要考虑全文索引(这里是start的一个位置)。这些通常比使用like更有效。