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

MySQLのインデックスと順序

    クエリ条件がPARTにのみ適用される場合、インデックスの順序が重要になります インデックスの。検討してください:

    1. SELECT * FROM table WHERE first_name="john" AND last_name="doe"

    2. SELECT * FROM table WHERE first_name="john"

    3. SELECT * FROM table WHERE last_name="doe"

    インデックスが(first_nameの場合 、last_name )クエリ1と2はそれを使用しますが、クエリ#3は使用しません。インデックスが(last_nameの場合) 、first_name )クエリ1と3はそれを使用しますが、クエリ#2は使用しません。 WHERE句内で条件の順序を変更しても、どちらの場合も効果はありません。

    詳細はこちら です。

    更新
    上記が明確でない場合-MySQLは、クエリ条件の列がインデックスの左端のプレフィックスを形成する場合にのみインデックスを使用できます。上記のクエリ#2は使用できません(last_namefirst_namefirst_nameのみに基づいているためインデックス およびfirst_namelast_nameの左端のプレフィックスではありません 、first_name )インデックス。

    クエリ内の条件の順序は重要ではありません。上記のクエリ#1は(last_nameを使用できるようになります 、first_name )条件がfirst_nameであるため、インデックスは問題ありません およびlast_name そして、これらを合わせると、(last_nameの左端のプレフィックスを形成します。 、first_name )インデックス。



    1. phpを使用してmysqlデータベースからkmlファイルを作成する

    2. HA/DRソリューションの自己妄想を避ける

    3. MySQL GROUP BY DateTime+/-3秒

    4. PostgreSQLメジャーバージョン8.4.x/9.3.xのアップグレード中のSlony-Iでのスイッチオーバー/スイッチバック