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

複数列のデータベースインデックスとクエリ速度

    いいえ。インデックス内の列の順序は非常に重要です。次のようなインデックスがあるとします。create unique index index_name on table_name (headline, coupon_code, description,expiration_date) この場合、これらのクエリはインデックスを使用します

    select * from table_name where headline = 1
    select * from table_name where headline = 1 and cupon_code = 2
    

    これらのクエリは一意のインデックスを使用しません:

    select * from table_name where coupon_code = 1
    select * from table_name where description = 1 and cupon_code = 2
    

    つまり、ルールは次のようなものです。複数のフィールドにインデックスを付ける場合、インデックスを使用できるようにするには、最初のkフィールドを指定する必要があります。

    つまり、任意のを検索できるようにしたい場合 これらのフィールドの1つを作成し、それぞれに個別にインデックスを作成する必要があります。 (結合された一意のインデックスを除く)

    また、LIKE演算子には注意してください。

    これはインデックスSELECT * FROM tbl_name WHERE key_col LIKE 'Patrick%';を使用します これはSELECT * FROM tbl_name WHERE key_col LIKE '%Patrick%';にはなりません

    インデックスの使用法 http://dev.mysql.com/doc /refman/5.0/en/mysql-indexes.html 複数列のインデックス http://dev.mysql。 com / doc / refman / 5.0 / en / multiple-column-indexes.html




    1. MySQL:1970年より前の日付

    2. インデックスがインデックス付きビューに適用されていません

    3. sysdateを使用したto_date関数

    4. エラー:リレーションの列が存在しませんPostgreSQL、挿入クエリを実行できません