MySQLのクエリのスロークエリの調査をしている中でIN句の中に重複したデータを突っ込んでいるクエリを発見しました。
クエリは以下のような感じです
SQL
1SELECT id, age, status 2FROM user 3WHERE name IN ("a", "b", "a", "c", "b", "a", "d", "e", "d",...);
重複の度合いとしては、IN句の中には約11万件入っており、重複を省くと1.6万件くらいになります。(およそ85%が重複)
ここできになるのが、重複を除いた状態でIN句に入れてあげることによってクエリの速度は改善するのかというところです。
MySQLがよしなに検索前に重複を省いていて、その重複を省くコストがそんなに大したことがないって落ちだとトータルの時間はそんなに変わらないなんてオチだと嫌だなと思い相談させていただきました。
現状、50秒というとんでもない時間がかかっているのですが、この重複を無くしてやることで早くなりますか??
MySqlは5.7を使っています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/10/12 10:35
退会済みユーザー
2018/10/12 10:38
2018/10/12 10:44
退会済みユーザー
2018/10/12 10:49