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

MySQLは、インデックス付きのTIMESTAMP列でファイルソートを使用します

    この場合、MySQLはソートにインデックスを使用しておらず、それは良いことです。なぜですか?テーブルには64k行しか含まれておらず、平均行幅は約26バイト(列サイズを正しく追加した場合)なので、ディスク上のテーブルの合計サイズは約2MBになるはずです.2MBのデータをディスクからメモリに読み取るのは非常に安価です(おそらくわずか1〜2回のディスク操作またはシークで)、メモリ内でファイルソートを実行します(おそらくクイックソートのバリエーション)。

    MySQLが必要に応じてインデックス順で取得を行った場合、64000のディスクシーク操作を次々に実行する必要があります。とても、とても遅かったでしょう。

    WHERE句のように、インデックスを使用して巨大なファイル内の既知の場所にすばやくジャンプし、少量のデータを読み取ることができる場合は、インデックスが適しています。しかし、この場合、それは良い考えではありません-そしてMySQLは愚かではありません!

    テーブルが非常に大きい場合(RAMサイズよりも大きい場合)、MySQLは確かにインデックスの使用を開始します-これも良いことです。



    1. SQLServerの動的ピボットテーブル

    2. MySQL8.0で変更されたロールの使用方法

    3. サーバーの再起動時にMYSQLが自動インクリメント値をリセットしないようにする

    4. Postgres以外のデータベースには、外部データラッパーに匹敵する機能がありますか?