あなたの質問に答えるには、少し分解する必要があります:
SELECT *
主に 3 種類の欠点があります:
- コードのメンテナンス:SELECT * を使用すると、複雑なテーブル/クエリの可読性が低下し、クライアント アプリケーションがクエリから特定の結果を期待しているにもかかわらず、テーブルが変更された場合に問題が発生する可能性があります
- ネットワーク パフォーマンス:クライアント アプリケーションに結果を返すときに SELECT * を使用すると、すべての列がクライアントに返されます。クライアントがこれらの列の一部のみを使用すると、帯域幅が浪費され、アプリケーションの実行速度が遅くなります。
- インデックス作成 / クエリ プランのパフォーマンス:状況によっては、インデックスに参加する列のみを返す必要があるクエリがあり、代わりにすべての列を返す場合、エンジン。
「ワイルドカードの解釈に関する意味」の意味がわかりませんが、 SELECT * が悪い考えである理由を誤解していると思われます.とにかく、SQLエンジンは提供された列を検証します。ワイルドカードを「拡張」するコストは基本的に 0 です。
ストアド プロシージャは、実際には「コンパイルされたコードの単位」ではありません。通常、ストアド プロシージャのクエリ プランは、最初の実行後にキャッシュされますが、実際には、多くの/ほとんどの状況でアドホック SQL ステートメントにも同じことが当てはまります。
さて、あなたの質問に実際に答えるには:はい 、 SELECT *
を使用することの欠点 アドホック SQL では、ストアド プロシージャ内の SQL にも同様に適用されます。