分析しようとしているこのmysqlクエリがあります。これは非常に遅く、ここのビジターテーブルは約50Kエントリであり、このクエリは返されません。Explainステートメントを試したところ、インデックスが使用可能であるにもかかわらず、訪問者テーブルでインデックスが使用されていないことがわかりました。今、これは私が解決するのに助けが必要な素晴らしいパズルです。ヒントをいただければ幸いです。
クエリ:
select distinct
visitor0_.ID as ID130_,
case when visitor0_1_.id is not null then 1 when
visitor0_.ID is not null then 0
end as clazz_
from Visitor visitor0_
left outer join Operator visitor0_1_ on visitor0_.ID=visitor0_1_.id
where (visitor0_.ID not in
(select operator1_.id
from Operator operator1_
inner join Visitor operator1_1_ on operator1_.id=operator1_1_.ID))
and (exists
(select visitorpro2_.ID
from VisitorProfileField visitorpro2_, ProfileField profilefie3_
where visitorpro2_.profileFieldID=profilefie3_.ID
and visitorpro2_.visitorID=visitor0_.ID
and profilefie3_.name='subscription86'
and visitorpro2_.numberVal=1
and visitorpro2_.stringVal='Manual'))
出力スクリーンショットの説明:http: //grab.by/grabs/9c3a629a25fc4e9ec0fa54355d4a092c.png