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

Djangoフィルター呼び出しから返されるリストのデフォルトの順序は何ですか?

    デフォルトの注文はありません 、誰もが間違っているので十分に強調できない点。

    データベース内のテーブルは、通常のhtmlテーブルではなく、順序付けされていないタプルのセットです。その特定のデータベースでは、いくつかの高度な最適化手法を利用していないため、行の順序が予測可能であることが多いため、MySQLにしか慣れていないプログラマーを驚かせることがよくあります。たとえば、次のクエリでは、返される行やその順序を知ることはできません。

    select * from table limit 10
    select * from table limit 10 offset 10
    select * from table order by x limit 10
    

    最後のクエリでは、列xのすべての値が一意である場合にのみ順序を予測できます。 RDBMSは、selectステートメントの条件を満たす限り、任意の行を任意の順序で自由に返すことができます。

    Djangoレベルでデフォルトの順序を追加することもできますが、これにより、順序付けされていないすべてのクエリにorderby句が追加されます。

    class Table(models.Model):
        ...
        class Meta:
            ordering = ['name']
    

    何らかの理由で順序付けられた行が必要ない場合は、パフォーマンスの低下になる可能性があることに注意してください。



    1. データベースサーバーのハードウェアトレンド

    2. Oracleで科学的記数法で数値をフォーマットする方法

    3. MySQL Workbench:クエリのエラー(1064):1行目の「VISIBLE」付近の構文エラー

    4. PostgreSQLで日付スタイルを変更するにはどうすればよいですか?