linq to sql 2016 Express/Standard edition与developer edition生成的不同输出脚本
我正在使用vb.net开发桌面应用程序(WinForm),并使用LINQ访问数据库(SQLSERVER 2016) 我有两个实例数据库相同的数据库(相同的结构和数据)。 -SQLEXPRESS2016(快速版) -SQLSERVER2016(开发者版) 但为什么我会得到不同的时间执行和不同的模式执行计划呢?LINQ生成的sql脚本linq to sql 2016 Express/Standard edition与developer edition生成的不同输出脚本,linq,execution,Linq,Execution,我正在使用vb.net开发桌面应用程序(WinForm),并使用LINQ访问数据库(SQLSERVER 2016) 我有两个实例数据库相同的数据库(相同的结构和数据)。 -SQLEXPRESS2016(快速版) -SQLSERVER2016(开发者版) 但为什么我会得到不同的时间执行和不同的模式执行计划呢?LINQ生成的sql脚本 dim myResult = (from i in myDataContext.ItemMaster _ Where i.IsActi
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之间的脚本相同):
我的问题是:
1.为什么在某些情况下,两个数据库之间的查询不同
快速/标准版和开发者版?(数据库结构和数据相同,只是版本不同)
一个将选择顶部(1)…,另一个将选择顶部(2)
通过添加NOEXPAND-hint关键字解决了这个问题。 请参见此处的原始答案: 归功于:Yuvraj Singh Bais
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]