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

PL /SQLのカーソルにselect*を使用すると、プログラミングが不適切と見なされますか?

    select *を使用する あなたのコードには、私がレイジープログラミングと呼ぶものがあり、いくつかの厄介な副作用があります。これらの副作用をどの程度経験するかは異なりますが、決してポジティブではありません。

    他の回答ですでに述べたポイントのいくつかを使用しますが、回答を編集して、select *の使用に関するいくつかの否定的なポイントを追加してください。 。

    1. SQLエンジンからコードに必要以上のデータを送信しているため、パフォーマンスに悪影響があります。

    2. 取得した情報は、変数(たとえば、レコード変数)に配置する必要があります。これには、必要以上のPGAメモリが必要になります。

    3. select *を使用する 必要な情報を取得するためにインデックスだけを使用することは決してありません。常にテーブルにもアクセスする必要があります(テーブルのすべての列を保持するインデックスが存在しない場合)。繰り返しますが、パフォーマンスに悪影響を及ぼします。

    4. あなたのコードを維持している人々にとって、あなたの意図が何であるかはあまり明確ではありません。何が取得されているかを知るために、レコード変数のすべてのオカレンスを見つけるためにコードを掘り下げる必要があります。

    5. SQL関数を使用して計算を実行することはありませんが、常にPL/SQLまたはJavaの計算に依存します。分析関数、モデル句、再帰的なサブクエリファクタリングなど、SQLの優れた改善点を見逃している可能性があります。

    6. Oracle11以降、依存関係は列レベルで追跡されます。つまり、select *を使用すると 、コードはデータディクショナリでそのテーブルの「すべての列に依存する」としてマークされています。これらの列の1つに何かが発生すると、プロシージャは無効になります。したがって、select *を使用すると、コードが必要以上に頻繁に無効になります。

    繰り返しになりますが、自由に独自のポイントを追加してください。



    1. gemruby-oci8を使用するOracleインスタントクライアントがRailsのDBに接続できないc

    2. Homebrew brewinstallmysqlが...値「127.0.0.1」を「server_id」に設定中にエラーが発生しました

    3. 'in'句はOracleでどのように機能しますか

    4. SQLは単一グループグループ関数ではありません