6

SQL の専門家からは、SELECT ステートメントで「*」記号を使用するのは効率的ではなく、代わりにすべてのフィールド名をリストする方がよいとよく耳にします。

しかし、テーブルに新しいフィールドを追加し、それに応じてすべてのストアド プロシージャを更新することに関しては、個人的には効率的ではありません。

'*' を使用する場合の長所と短所は何ですか?
ありがとう。

4

2 に答える 2

13

一般に、 の使用はSELECT *お勧めできません。

長所:

  • 列を追加/削除するとき、使用した場所を変更する必要はありませんSELECT *
  • 書いたほうが短い
  • 次の回答も参照してください

短所:

  • 必要以上のデータを返しています。VARBINARY行ごとに 200k を含む列を追加するとします。このデータは、 1 つのレコードに対して1か所でのみ必要です。使用すると、必要のないSELECT *10 行ごとに 2MB が返される可能性があります。
  • どのデータが使用されているかを明確にする
  • 列を指定すると、列が削除されたときにエラーが発生することを意味します
  • クエリ プロセッサは、テーブルに存在する列を特定するために、さらに作業を行う必要があります ( @vinodadhikaryに感謝します) 。
  • 列が使用されている場所をより簡単に見つけることができます
  • 使用すると、結合ですべての列を取得しますSELECT *
  • 序数参照を使用することはできません (ただし、列に序数参照を使用すること自体は悪い習慣です)。
  • 次の回答も参照してください: select * を使用しない理由は何ですか?
于 2013-07-14T08:22:17.633 に答える
5

長所:

  • 本当にすべての列が必要な場合は、書くのが短くなりますselect *

短所:

  • ほとんどの場合、すべての列が必要なわけではなく、一部の列のみが必要です。必要なものだけを取得する方が効率的です
  • 取得された列の順序は保証されません (または少なくとも、順序はクエリからは明らかではありません)。これにより、インデックス (名前のみ) による列へのアクセスが禁止されます。しかし、名前も明らかではありません
  • 同じ名前の列を持つ可能性のある複数のテーブルを結合する場合、これらの列のエイリアスを定義できます
于 2013-07-14T08:24:33.400 に答える