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

このクエリを最適化する方法(4 mmのテーブルが含まれます)

    GROUP BYを取り除く必要があります ここ。

    MySQL 最適化するのは得意ではありません。

    クエリを次のように書き直します:

    SELECT  *
    FROM    product_table
    WHERE   EXISTS
            (
            SELECT  NULL
            FROM    product_table__category_1__mm mm_1
            JOIN    category cat_1
            ON      cat_1.uid = mm_1.uid_foreign
            WHERE   mm_1.uid_local = product_table.uid
                    AND mm_1.uid_foreign IN (7, 8)
            )
            AND
            …        
    

    インデックスを作成します:

    product_table__category_*__mm (uid_local, uid_foreign)
    

    または、PRIMARY KEYsを宣言することをお勧めします product_table__category_*__mmに :

    ALTER TABLE product_table__category_*__mm ADD CONSTRAINT pk_pc*mm_local_foreign (uid_local, uid_foreign)
    


    1. DockerComposeを使用してポート3307でMySQLを実行する

    2. mysqlは特定の文字をチョークし、mssqlはチョークしません

    3. MySQLサーバーでの非常に単純なAVG()集約クエリは、途方もなく長い時間がかかります

    4. hibernateでネイティブSQLを実行する