sql >> データベース >  >> RDS >> Sqlserver

SQL Server ワイルドカード

    あなたの質問に答えるには、少し分解する必要があります:

    SELECT * 主に 3 種類の欠点があります:

    • コードのメンテナンス:SELECT * を使用すると、複雑なテーブル/クエリの可読性が低下し、クライアント アプリケーションがクエリから特定の結果を期待しているにもかかわらず、テーブルが変更された場合に問題が発生する可能性があります
    • ネットワーク パフォーマンス:クライアント アプリケーションに結果を返すときに SELECT * を使用すると、すべての列がクライアントに返されます。クライアントがこれらの列の一部のみを使用すると、帯域幅が浪費され、アプリケーションの実行速度が遅くなります。
    • インデックス作成 / クエリ プランのパフォーマンス:状況によっては、インデックスに参加する列のみを返す必要があるクエリがあり、代わりにすべての列を返す場合、エンジン。

    「ワイルドカードの解釈に関する意味」の意味がわかりませんが、 SELECT * が悪い考えである理由を誤解していると思われます.とにかく、SQLエンジンは提供された列を検証します。ワイルドカードを「拡張」するコストは基本的に 0 です。

    ストアド プロシージャは、実際には「コンパイルされたコードの単位」ではありません。通常、ストアド プロシージャのクエリ プランは、最初の実行後にキャッシュされますが、実際には、多くの/ほとんどの状況でアドホック SQL ステートメントにも同じことが当てはまります。

    さて、あなたの質問に実際に答えるには:はいSELECT * を使用することの欠点 アドホック SQL では、ストアド プロシージャ内の SQL にも同様に適用されます。




    1. テーブルの行を更新する方法、または行が存在しない場合は挿入する方法を教えてください。

    2. MySQLからPostgreSQLへの移行-知っておくべきこと

    3. MySQLクエリでテキストを数値に変換する

    4. 長い型の数値を使用してvarchar型をフィルタリングすると、MySQLは余分なレコードを返します