-2

重複の可能性:
select * と select column

20 列のテーブルがあるとします。select *20列すべてを明示的に含むselectとの間に速度の違いはありますか?

違いがない場合、何をアドバイスしますか? レイジーを使用するselect *必要がありますか、それとも各列でクエリ文字列を作成する必要がありますか?

(違いがある場合:私はSQL Serverを使用しています。)

4

2 に答える 2

1

速度についてはそれほど重要ではありませんが、保守性については...

アプリケーションが特定の列を要求し、テーブル構造が変更された (列が削除されたか名前が変更された) 場合、ステートメントは実行時に壊れ、問題がどこにあるかを正確に示します。

select * は構造の変更後も引き続き機能しますが、後でアプリケーションでより微妙な問題が発生し、追跡がより困難になる可能性があります。

前もって追加の作業が必要ですが、列を明示的にリストする方が保守性に優れています。

where句がパラメータ化されていると仮定すると、SQLは1回だけ解析され、その後ステートメントキャッシュにあるはずであり、実行速度はそれほど変わりません。

于 2012-09-26T05:44:03.523 に答える
0

選択ステートメント自体に列名を含めることをお勧めします。テーブルの構造は将来変更される可能性があり、不要なデータを取得する可能性があるため..

パフォーマンスに関して

select * を使用する場合、SQL Server コンパイラは * を列名に置き換える必要がありますが、これは追加のタスクですが、無視できると思います

于 2012-09-26T05:43:13.197 に答える