linq 到 sql 2016 速成版/标准版与开发人员版生成的不同输出脚本



我正在使用 vb.net 开发桌面应用程序(WinForm(,并使用LINQ访问数据库(SQLSERVER 2016(

我有 2 个实例数据库相同的数据库(相同的结构和数据(。 - SQLEXPRESS2016(速成版( - SQLSERVER2016(开发者版(

但是为什么我也得到了显着的不同时间执行和不同的模式执行计划?LINQ 生成的 sql 脚本??

dim myResult = (from i in myDataContext.ItemMaster _
Where i.IsActive _
Order by m.ItemNumber).AsQueryable
dim count = myResult.Count()

我通过 SQL Server 分析来分析由 linq 生成的查询,myResult.Count(( 将生成脚本(在这种情况下,dev 和 standard/express 之间的脚本是相同的(:

Select Count(1) AS [value]
FROM( Select TOP (1000) NULL AS [EMPTY]
FROM ITEM_MASTER as [t0] WHERE IS_Active = 1
ORDER BY [t0].[ItemNumber]
)AS [t1]

我的问题是: 1. 为什么在某些情况下查询在 速成版/标准版和开发人员版?(数据库结构和数据相同,只是版本不同( 一个将生成选择顶部 (1(...,另一个将选择顶部 (2( ....

  1. 为什么执行时间不同是显著的。 dev = 0.xx 秒 标准/快递 = 8s 经济。 这应该没什么大不了的,因为行数大约 10,000 左右

  2. 为什么执行计划也不同? std/express 似乎更复杂的模式,并且缺少一些索引。

屏幕截图 SQL 开发与快速/标准

它通过添加NOEXPAND提示关键字来解决。 请在此处查看原始答案: https://social.msdn.microsoft.com/Forums/en-US/b095ce80-6b19-45a5-9a31-4532fcd8af83/different-output-script-generated-by-linq-to-sql-2016-expressstandard-edition-vs-developer-edition?forum=sqlnetfx

学分:尤夫拉杰·辛格·拜斯

最新更新