问题是,与使用一个或两个而不是全部三个条件运行的查询相比,所讨论的查询运行速度非常慢.
现在查询.
Select Count(*)
From
SearchTable
Where
[Date] >= '8/1/2009'
AND
[Zip] In (Select ZipCode from dbo.ZipCodesForRadius('30348', 150))
AND
FreeText([Description], 'keyword list here')
Run Code Online (Sandbox Code Playgroud)
第一个条件是自我解释.第二个使用UDF获取30348英里内150英里内的邮政编码列表.第三个使用全文索引来搜索提供的单词.
只有这种情况
[Date] >= '8/1/2009'
Run Code Online (Sandbox Code Playgroud)
查询在3秒内返回43884(表大小不到500k行).
仅使用此条件
[Zip] In (Select ZipCode from dbo.ZipCodesForRadius('30348', 150))
Run Code Online (Sandbox Code Playgroud)
我得到27920,也在3秒后返回.
并且只有全文部分
FreeText([Description], 'keyword list here')
Run Code Online (Sandbox Code Playgroud)
68404在8秒内返回.
当我只使用邮政编码和全文条件时,我在4秒内得到4919 .
只是日期和全文条件让我在短短的14秒内得到9481 .
使用日期和邮政编码条件只能在14秒内给出3238 .
在所有三个条件下,查询在2分53秒内返回723 .(wtfbbq)
假设我有一个数组,我想对varchar进行LINQ查询,该查询返回在varchar中任何位置都有数组元素的记录.
像这样的东西会很甜蜜.
string[] industries = { "airline", "railroad" }
var query = from c in contacts where c.industry.LikeAnyElement(industries) select c
string[] industries = { "airline", "railroad" }
var query = from c in contacts where c.industry.LikeAnyElement(industries) select c
string[] industries = { "airline", "railroad" }
var query = from c in contacts where c.industry.LikeAnyElement(industries) select c
有任何想法吗?