我使用Linq在Web应用程序中实现了分页,Linq生成的查询看起来与此类似:
SELECT
[Extent1].[ID_PLAZO] AS [ID_PLAZO],
LTRIM(RTRIM([Extent1].[ID_EXPEDIENTE])) AS [ID_EXPEDIENTE],
[Extent1].[ID_TIPO_PLAZO] AS [ID_TIPO_PLAZO],
[Extent1].[FECHA_INICIO] AS [FECHA_INICIO],
[Extent1].[FECHA_FIN] AS [FECHA_FIN],
[Extent1].[FECHA_EJECUCION_INICIO] AS [FECHA_EJECUCION_INICIO],
[Extent1].[FECHA_EJECUCION_FIN] AS [FECHA_EJECUCION_FIN]
FROM [dbo].[AESEG_PLAZO] AS [Extent1]
INNER JOIN [dbo].[AESEG_EXPEDIENTE] AS [Extent2] ON [Extent1].[ID_EXPEDIENTE] = [Extent2].[ID_EXPEDIENTE]
INNER JOIN [dbo].[SAS_CONVOCATORIA] AS [Extent3] ON [Extent2].[ID_CONVOCATORIA] = [Extent3].[CONV_ID_CONVOCATORIA]
WHERE ([Extent3].[CONV_PREFIJO_EXP] LIKE '%AC15%' ESCAPE '~') OR ([Extent3].[CONV_DESCRIPCION] LIKE '%AC15%' ESCAPE '~')
ORDER BY [Extent1].[ID_PLAZO] ASC
OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY
查询确实有效,并且在不到一秒的时间内返回10个结果,但如果我获取5行,它就不会结束。
我注意到执行计划在这些情况下有点不同,但我不是SQL专家。你知道如何解决这个问题或为什么会这样?
获取10行
获取5行
答案 0 :(得分:1)
似乎问题出现在 ESCAPE'〜'部分。最后,我使用这种方法生成一个没有它的查询,它工作正常,速度更快。
http://jendaperl.blogspot.com.es/2011/02/like-in-linq-to-entities.html