Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linq to sql 2016 Express/Standard edition与developer edition生成的不同输出脚本_Linq_Execution - Fatal编程技术网

linq to sql 2016 Express/Standard edition与developer edition生成的不同输出脚本

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

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

我有两个实例数据库相同的数据库(相同的结构和数据)。 -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之间的脚本相同):

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

  • 为什么执行时间不同很重要。 dev=0.xx秒 标准/快速=8秒。 这应该没什么大不了的,因为行数大约在10000左右

  • 为什么执行计划也不同?std/express的架构似乎更复杂,缺少一些索引


  • 通过添加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]