Linq查询耗时太长

Mat*_*att 5 c# linq entity-framework

我想知道是否有人可以帮助我.我有一个LINQ查询 - 没有问题,但返回数据需要太长时间

var result = Context.paf_wgs84.Where(c => c.Postcode.Contains(postcode)).Take(15);
Run Code Online (Sandbox Code Playgroud)

很简单,用户输入的想法,使用AJAX,它返回一组15个可能的匹配.

问题是,有160万条记录

在管理工作室中运行以下代码大约需要3秒钟

SELECT   code
FROM     paf_wgs84
WHERE    (code LIKE '%EC1%')
Run Code Online (Sandbox Code Playgroud)

运行以下代码的时间不到一秒

SELECT   TOP 15  code
FROM     paf_wgs84
WHERE    (code LIKE '%EC1%')
Run Code Online (Sandbox Code Playgroud)

有没有办法在LINQ中做类似的事情而不使用.take()

Jet*_*hro 3

你可以尝试这样的事情。这只会返回一列。

var result = Context.paf_wgs84.Where(c => c.Postcode.Contains(postcode)).Select(x=>new {x.Postcode}).Take(15);
Run Code Online (Sandbox Code Playgroud)

生成的Sql语句如下所示。

/*
-- Region Parameters
DECLARE @p0 VarChar(1000) = '%s%'
-- EndRegion
SELECT TOP (15) [t0].[code]
FROM [paf_wgs84] AS [t0]
WHERE [t0].[code] LIKE @p0
*/
Run Code Online (Sandbox Code Playgroud)