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

Postgresqlのid列の位置は重要ですか?

    理論的にはすべてがうまくいくはずですが、コードが失敗する可能性があるシナリオは常にあります。

    例:

    a)blind insert

     INSERT INTO tab_name
     VALUES (1, 'b', 'c');
    

    ブラインド挿入とは、INSERTクエリで挿入されたデータを受け取る列が指定されていない場合です。

    なぜこれが悪いのですか?

    データベーススキーマが変更される可能性があるためです。列は、移動、名前変更、追加、または削除できます。そして、そうなると、少なくとも3つのことが起こります。

    1. クエリは失敗します。これが最良のシナリオです。誰かがターゲットテーブルから列を削除しましたが、挿入するのに十分な列がないか、誰かがデータ型を変更して挿入された型に互換性がないなどです。ただし、少なくともデータが破損することはなく、エラーメッセージが原因で問題が存在することさえわかっているかもしれません。

    2. クエリは引き続き機能し、何も問題はありません。これは、中程度の最悪のシナリオです。データは破損していませんが、モンスターはまだベッドの下に隠れています。

    3. クエリは引き続き機能しますが、現在、一部のデータが属していない場所に挿入されています。データが破損しています。

    b)ORDER BY oridinal

    SELECT *
    FROM tab
    ORDER BY 1;
    



    1. これらのメトリックを使用してSQLServerのパフォーマンスを測定していますか?

    2. 別のテーブルにないIDを持つレコードを検索するSQLクエリ

    3. ClassCastException:MySQLへの接続時にjava.math.BigIntegerをjava.lang.Longにキャストできません

    4. クエリチューニングによるSQLデッドロックの回避:BrentOzarからのアドバイス