我想知道有没有人能帮我一下。我有一个LINQ查询--没有问题,但返回数据的时间太长了
var result = Context.paf_wgs84.Where(c => c.Postcode.Contains(postcode)).Take(15);非常简单,当用户使用AJAX输入时,它返回一组15个可能的匹配项。
问题是,有160万条记录
在management studio中运行以下代码大约需要3秒钟。
SELECT code
FROM paf_wgs84
WHERE (code LIKE '%EC1%')其中,运行以下代码所需时间不到一秒
SELECT TOP 15 code
FROM paf_wgs84
WHERE (code LIKE '%EC1%')有没有一种不用.take()就能在LINQ中做类似事情的方法呢?
发布于 2011-08-25 18:30:43
你可以试试这样的东西。这将只返回一列。
var result = Context.paf_wgs84.Where(c => c.Postcode.Contains(postcode)).Select(x=>new {x.Postcode}).Take(15);生成的Sql语句将如下所示。
/*
-- Region Parameters
DECLARE @p0 VarChar(1000) = '%s%'
-- EndRegion
SELECT TOP (15) [t0].[code]
FROM [paf_wgs84] AS [t0]
WHERE [t0].[code] LIKE @p0
*/https://stackoverflow.com/questions/7188653
复制相似问题