我的SQL Server数据库中有一个包含超过400000行的表,我想选择以.txt文件中大于150个名称的多个名称开头的全名,那么查询将如何在C#中我的命令。我可以用这种方式写它但它会太长并且可能会造成延迟或某种错误!
select *
from tableName
where fullName like '%Jack%'
or fullName like '%Wathson%'
--.... and so on
答案 0 :(得分:1)
评论太长了。
首先,SQL Server可以处理很长的查询。我创建了至少150k字符的查询,它们可以正常工作。限制远远大于此。
其次,你是正确的,一堆like
语句需要很长时间。 like
有开销。
第三,你的模式不符合你的陈述。如果您希望 start 的名称具有特定模式,则从模式的开头删除通配符。这样做的另一个好处是,SQL Server可以在FullName
上使用常规索引进行匹配。
最后,如果您真的在查看初始字符串,那么您可能需要考虑全文索引(这里是start的一个位置)。这些通常比使用like
更有效。