Linq to sql 使用LINQ执行SQL查询时速度慢(使用全文搜索)

Linq to sql 使用LINQ执行SQL查询时速度慢(使用全文搜索),linq-to-sql,full-text-search,Linq To Sql,Full Text Search,我有一个由LINQ生成的查询,它生成了一个超时错误。 但是,当我在SQLServerManagementStudio中运行生成的查询时,它会在不到一秒钟的时间内执行 问题是: exec sp_executesql N'SELECT COUNT(*) AS [value] FROM [dbo].[Document] AS [t0] INNER JOIN [dbo].[Document_Search_order_nummer](@p0) AS [t1] ON [t0].[DocumentID] =

我有一个由LINQ生成的查询,它生成了一个超时错误。 但是,当我在SQLServerManagementStudio中运行生成的查询时,它会在不到一秒钟的时间内执行

问题是:

exec sp_executesql N'SELECT COUNT(*) AS [value]
FROM [dbo].[Document] AS [t0]
INNER JOIN [dbo].[Document_Search_order_nummer](@p0) AS [t1] ON [t0].[DocumentID] = [t1].[Key]
LEFT OUTER JOIN [dbo].[DocType] AS [t2] ON [t2].[Id] = [t0].[DocumentTypeIDOut]
LEFT OUTER JOIN [dbo].[DocTypeFormat] AS [t3] ON [t3].[Id] = [t2].[FormatId]
LEFT OUTER JOIN [dbo].[DocTypeType] AS [t4] ON [t4].[Id] = [t2].[TypeId]
INNER JOIN [dbo].[OriginalDocument] AS [t5] ON [t5].[OriginalDocID] = [t0].[OriginalDocID]
INNER JOIN [dbo].[User] AS [t6] ON [t6].[User_ID] = [t0].[DocumentFrom]
INNER JOIN [dbo].[User] AS [t7] ON [t7].[User_ID] = [t0].[DocumentTo]
WHERE ([t0].[DocumentID] <> @p1)',N'@p0 nvarchar(4000),@p1 int',@p0=N'"*+11110001+*" ',@p1=270675
以下是SQL server探查器中的日志:

使用LINQ:

Eventclass=RPC:已完成 ApplicationName=.Net SqlClient数据提供程序 CPU=12625 读数=1137844 写入=0 持续时间=29989

使用SQL Server Management Studio:

Eventclass=SQL:BatchCompleted ApplicationName=Microsoft SQL Server Management Studio-查询 CPU=78 读数=31645 写入=0 持续时间=99


使用相同的查询会产生如此大的性能差异的原因是什么?如何解决此问题?

我们曾经遇到过完全相同的问题

一个可能的原因可能是导致这种情况的原因

但是,这不是我们的问题。事实证明,在某些情况下,查询只是需要更长的时间来执行。因此,我们隔离了查询并通过ADO.NET SqlCommand类运行它。信不信由你,当我们在sql命令之间添加额外的空格时,查询执行得更快了


因此,我们接受了查询并从中创建了一个视图。它解决了我们的问题

没有人能让我走上正轨请看这里: