4

T-SQL を使用する場合、DBA から次のように言われました。

select count(id) from tableName

よりも速い

select count(*) from tablenName

id が主キーの場合。

それを LINQ-TO-SQL に外挿すると、以下は正確ですか?

この LINQ-to-SQL ステートメント:

int count = dataContext.TableName.Select(primaryKeyId => primaryKeyId).Count();

これよりもパフォーマンスが高い:

int count = dataContext.TableName.Count();
4

2 に答える 2

6

select count私が理解しているように、あなたの2つのステートメントに違いはありません。

LINQPad を使用すると、さまざまな LINQ ステートメントによって生成された T-SQL を調べることができます。

Linq から SQL への両方の場合

TableName.Select(primaryKeyId => primaryKeyId).Count();

TableName.Count();

同じ SQL を生成する

SELECT COUNT(*) AS [value] FROM [dbo].[TableName] AS [t0]

Linq to Entites の場合、どちらも同じ SQL を生成しますが、現在は

SELECT 
[GroupBy1].[A1] AS [C1]
FROM ( SELECT 
    COUNT(1) AS [A1]
    FROM [dbo].[TableName] AS [Extent1]
)  AS [GroupBy1]
于 2012-04-20T16:10:12.483 に答える