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

MySQLがここで常にインデックスマージを使用しないのはなぜですか?

    わお!これは私が見た中で最も複雑な「インデックスマージ」です。

    通常(おそらく常に )、「composite」インデックスを作成して、index-merge-intersectを置き換え、パフォーマンスを向上させることができますkey2を変更します (pinned)から (pinned, DeviceId)へ 。このかもしれません 「交差」を取り除き、スピードアップします。

    一般に、オプティマイザーは必死になってのみインデックスマージを使用します。 (これがタイトルの質問に対する答えだと思います。)クエリまたは関連する値にわずかな変更があれば、オプティマイザーはインデックスのマージなしでクエリを実行します。

    一時テーブルの改善__codes 広範囲の値を使用して永続的なテーブルを作成し、Proc内でそのテーブルの値の範囲を使用することです。 MariaDBを使用している場合は、動的に構築された「シーケンス」テーブルを使用します。たとえば、「テーブル」seq_1_to_100 効果的に 番号1..100の1列のテーブル。宣言したり、入力したりする必要はありません。

    他のREPEATを取り除くことができます コンピューティングによるループ Codeからの時間 。

    LOOPsの回避 パフォーマンス上の最大のメリットになります。

    すべてを完了してください。そうすれば、他のヒントが得られるかもしれません。




    1. MySQLは保存されたUTC時間をローカルタイムゾーンに変換できますか?

    2. MySQLでアジア言語の文字を含むテキストをクエリするにはどうすればよいですか?

    3. それぞれのwhere条件にMySql制限を設定したい

    4. MySQLデータベースに行を挿入する最も効率的な方法