は、私は、次のようにクエリを持っています。SQLクエリの実行時間、SQL Serverの、ネストされたクエリ
しかし、クエリはすぐに実行されます。 (でも一秒未満))
select count(*) as numberOfRows from (SELECT Brand,Id,Model FROM product) result
なぜですか?
は、私は、次のようにクエリを持っています。SQLクエリの実行時間、SQL Serverの、ネストされたクエリ
しかし、クエリはすぐに実行されます。 (でも一秒未満))
select count(*) as numberOfRows from (SELECT Brand,Id,Model FROM product) result
なぜですか?
クエリを実行すると、取得される時間は、列と行の数とそのデータ型によって異なります。
10個の列があるテーブルでは、すべてのレコードに対してすべての列(*)を選択し、すべてのレコードに対して1または2列を選択すると、パフォーマンスが異なります。 2番目のケースでは、読み込まれるデータの量が少なくなるため、より高速に実行されます。
ちょうどそのように、Count(*)と言うと、結果は単なるCellですが、最初のSelectでは、これらの3つの列に対して何百万もの行が選択されています。
そのため、Count(*)の結果がより速くなっています。カウントの中に*を付ける必要はありません。代わりにCount(1)を使用すると、より良いパフォーマンスが得られます。
あなたが言うことは限界性能問題に適用されるかもしれませんが、実際には問題とは関係ありません。 'count(*)'と 'count(1)'は同じ性能を持っています。 –
おそらく、クエリオプティマイザは、レコードの数だけを取得するようにクエリを最適化でき、すべてのレコード自体を取得することができないためです。 'SELECT count(*)FROM product' –
SQL Serverはインテリジェントなので、実際には選択した列で何もしていないので、' count(*) 'を実行するだけです。実行計画を確認してください。 – HoneyBadger