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()?
你可以尝试这样的事情。这只会返回一列。
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)
| 归档时间: |
|
| 查看次数: |
2234 次 |
| 最近记录: |