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

MySQL EXPLAIN:インデックスの使用とインデックス条件の使用

    例がそれを最もよく説明しています:

    SELECT Year, Make --- possibly more fields and/or from extra tables
    FROM myUsedCarInventory
    WHERE Make = 'Toyota' AND Year > '2006'
    
    Assuming the Available indexes are:
      CarId
      VIN
      Make
      Make and Year
    

    このクエリは、必要がないため、「インデックスの使用」で説明します。 、「Make and Year」インデックスが、そのテーブルに関連するWHERE句の要素に関してその必要性を「カバー」するため、myUsedCarInventoryテーブル自体を「ヒット」する

    ここで、クエリを同じに保ちますが、色に条件を追加することを想像してみてください

    ...
    WHERE Make = 'Toyota' AND Year > '2006' AND Color = 'Red'
    

    このクエリは、「インデックス条件の使用」でEXPLAINを実行する可能性があります(「可能性が高い」。これは、Toyota + yearが十分に選択的であると推定されず、オプティマイザがテーブルをスキャンすることを決定する場合です)。これは、MySQLが最初になることを意味します インデックスを使用してMake+Yearを解決すると、テーブル内の対応する行も検索する必要があります。のみ Make+Year条件を満たす行。これは、「最適化をプッシュダウン "。



    1. MySQL-値が配列内にある行を選択する方法は?

    2. INSERTで重複するエントリをサイレントに無視/削除するトリガー

    3. データベース接続文字列はどこに保存する必要がありますか?

    4. 最後に挿入されたIDを取得するJavaPreparedStatement