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

Percona5.6InnoDBの問題がインデックスを正しく使用していない

    これは次のように聞こえます:バグ#70617デフォルトの永続的な統計により、予期しない長いクエリ時間が発生する可能性があります>

    価値があるのは、これはPerconaのバグではなく、MySQL5.6コミュニティエディションにも存在することです。

    考えられる回避策は3つあります。

    1. STRAIGHT_JOINを使用して、テーブル参照を並べ替えないようにオプティマイザーにヒントを与えます。

      SELECT STRAIGHT_JOIN
        i.item_name, i.item_key, i.item_date, f.format_long
      FROM items i
      INNER JOIN formats f
        ON i.item_format = f.format_id
      WHERE i.item_private = 0 
      ORDER BY i.item_id DESC LIMIT 8
      

      JOINをSQL-92構文を使用するように書き直しました。これをお勧めします。

    2. 新しいInnoDB永続統計を無効にします 機能、5.6より前の動作に戻します。

      my.cnfファイル内:

      innodb_stats_persistent=0
      
    3. データに大幅な変更を加えた後(たとえば、mysqldumpをロードした後)、InnoDBオプティマイザーの統計を手動で更新します。

      ANALYZE TABLE items;
      ANALYZE TABLE formats;
      

    PS:私はPerconaで働いていますが、このバグは同僚の JustinSwanhart によって発見されました。 。




    1. max(timestamp)に基づくMysql結合

    2. SQLServerデータベース内のシステムテーブルの数をカウントする3つの方法

    3. 列が見つかりません:1054不明な列laravel

    4. グループごとに<whatever>が最も高い/最も小さいレコードを取得します