小编Cla*_*ark的帖子

为什么多个WHERE条件会减慢查询速度而不是加快速度?

问题是,与使用一个或两个而不是全部三个条件运行的查询相比,所讨论的查询运行速度非常慢.

现在查询.

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)

t-sql sql-server sql-server-2005

17
推荐指数
2
解决办法
1万
查看次数

LINQ for LIKE查询数组元素

假设我有一个数组,我想对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

有任何想法吗?

linq arrays linq-to-sql

6
推荐指数
1
解决办法
4396
查看次数

标签 统计

arrays ×1

linq ×1

linq-to-sql ×1

sql-server ×1

sql-server-2005 ×1

t-sql ×1