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

MySQL:クエリ間の最適なインデックス

    理由はわかりませんが、order by句と制限をクエリに追加すると、常にインデックスヒットが発生し、数秒ではなく数ミリ秒で実行されるようです。

    explain select * from geo_ip where 2393196360 between start_ip and end_ip order by start_ip desc limit 1;
    +----+-------------+--------+-------+-----------------+----------+---------+------+--------+-------------+
    | id | select_type | table  | type  | possible_keys   | key      | key_len | ref  | rows   | Extra       |
    +----+-------------+--------+-------+-----------------+----------+---------+------+--------+-------------+
    |  1 | SIMPLE      | geo_ip | range | start_ip,end_ip | start_ip | 4       | NULL | 975222 | Using where |
    +----+-------------+--------+-------+-----------------+----------+---------+------+--------+-------------+
    

    これで十分ですが、オプティマイザーが他の場合にインデックスを使用しないことを決定した理由を知りたいと思います。



    1. PHP/MySQLグループの結果を列別に

    2. MySQLを使用したPDOが電子メールアクティベーションで機能しない

    3. MySQLの長すぎるvarcharの切り捨て/エラー設定

    4. mysqlで時間間隔に従って行を選択する方法は?