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

600万行のテーブルでのMysqlのパフォーマンス

    クエリがインデックスのみを使用することを確認したいので、インデックスが選択しているすべてのフィールドをカバーしていることを確認してください。また、範囲クエリが含まれるため、定数としてクエリされるため、インデックスの最初にvenidを指定する必要があります。したがって、次のように作成してインデックスを作成します。

    ALTER TABLE events ADD INDEX indexNameHere (venid, date, time);
    

    このインデックスを使用すると、クエリを完了するために必要なすべての情報がインデックスに含まれます。これは、うまくいけば、ストレージエンジンが、テーブル自体の内部を実際に検索しなくても情報をフェッチできることを意味します。ただし、MyISAMはインデックスのリーフにデータを格納しないため、これを実行できない可能性があります。そのため、希望する速度の向上が得られない可能性があります。その場合は、テーブルのコピーを作成し、そのコピーでInnoDBエンジンを使用してみてください。そこで同じ手順を繰り返して、速度が大幅に向上するかどうかを確認します。 InnoDBはします フィールド値をインデックスリーフに格納し、インデックスをカバーできるようにします。

    さて、クエリを説明すると、次のように表示されることを願っています。

    mysql> EXPLAIN SELECT date, time FROM events WHERE venid='47975' AND date>='2009-07-11' ORDER BY date;
    
    id  select_type table  type  possible_keys        key       [..]  Extra
    1   SIMPLE   events range date_idx, indexNameHere indexNameHere   Using index, Using where
    


    1. AjaxとPHPを使用してデータベース(mysql)に挿入します

    2. SQLServerのPRINTステートメントの概要

    3. Oracle Appsのパッチ履歴テーブル(11i / R12.1 / R12.2)

    4. 1つのステートメントでシーケンスから複数のNEXTVALを照会します