DELETEクエリのMySQLのパフォーマンスチューニング

Cbpro広告:

いずれかの助け私は、実行時間をスピードアップするために、クエリを再書き込みすることはできますか?それは取った37実行する秒。

DELETE FROM storefront_categories 
WHERE userid IN (SELECT userid 
                FROM MASTER 
                where expirydate<'2020-2-4' 
                )

同時に、このクエリは実行するだけで4.69秒かかりました。

DELETE FROM storefront_categories 
WHERE userid NOT IN (SELECT userid FROM MASTER)

テーブルstorefront_categoriesは持っている97Kのように、レコードMASTER持つ40Kレコードを。私たちは、MASTER.expirydateのフィールドにインデックスを作成しました。

GMB:

そのままクエリは罰金に見えます。

私は最適化のため、次のインデックスをお勧めします:

master(expiry_date, userid)
storefront_categories(userid)

最初のインデックスは、カバーの上にサブクエリのインデックスmasterそれだけで一方のデータベースのみインデックス(を見て、サブクエリを実行することができるようにする必要があることを意味します:expiry_dateインデックスで、それがまだフェッチするために、テーブルのデータを見てする必要があります関連しますuserid)。

2番目のインデックスは、最適化データベースことができますin操作を。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=8758&siteId=1