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

where句に列を追加するクエリのMySQLパフォーマンス

    @ e4c5は、どのインデックスも現在のクエリに役立たないというのは正しいことです。次のインデックスを追加することから始めて、インデックスが使用されるように追加の条件でクエリを変更できます。

    ALTER TABLE myTable
    ADD INDEX(categoryId, value1),
    ADD INDEX(categoryId, value2),
    ADD INDEX(categoryId, value3),
    ADD INDEX(categoryId, value4);
    

    そして、次のようにクエリを更新します:

    SELECT * FROM myTable WHERE categoryId = 1 AND (value1 <= 9) AND (value2 <= 9) AND (value3 <= 9) AND (value4 <= 9) AND (value1 + value2 + value3 + value4) > 9;
    SELECT * FROM myTable WHERE categoryId = 1 AND (value1 <= 5) AND (value3 <= 5) AND (value4 <= 5) AND (value1 + value3 + value4) > 5;
    

    追加の条件は、処理する行数を絞り込むのに役立ちます。より多くの列にインデックスを追加すると、これがさらに高速化されますが、最初にこれを試すことをお勧めします。



    1. Postgresql:MacOSXを使用してpg_hba.confファイルを見つける方法

    2. mysql:ユーザーによる最後の会話レコードを取得します

    3. SpringJPA@Queryで完全に一致するレコードをフェッチする方法

    4. 複数の行の値に一致する外部キーを検索する