我每 1 秒执行一次查询,大部分时间它不返回任何结果(由实体框架生成的 SQL):
SELECT TOP (5)
[Extent1].[ID] AS [ID],
***30 more columns***
FROM ParentTable AS [Extent1]
WHERE ([Extent1].[ImageTaken] = 1) AND ([Extent1].[ImageProjected] <> 1) AND ( EXISTS (SELECT
1 AS [C1]
FROM ChildTable AS [Extent2]
WHERE [Extent1].[ID] = [Extent2].[Parent_ID]
))
Run Code Online (Sandbox Code Playgroud)
上面的查询大约需要 400 毫秒。但是,如果我从结果中排除除 ID 之外的所有列,则大约需要 100 毫秒。
如果没有结果,为什么执行时间如此不同?我查看了执行计划,它们看起来完全相同(在今天之前我从未看过执行计划,因此请谨慎对待)。
我想包括所有列,但显然我只在有结果时才需要它们。
实际执行计划
编辑 更多细节:
父表定义
USE [DB]
GO
/****** Object: Table [dbo].[Inspection_CapturedImageQueueItem] Script …
Run Code Online (Sandbox Code Playgroud) performance sql-server entity-framework sql-server-2017 query-performance