2016-06-16 8 views
0

このクエリで実行時間とフェッチ時間を探していると、書き直しの提案に感謝します。おかげ学校のためのMysqlのSQL文

SELECT * 
    FROM job.FilledApplication FA 
    JOIN job.InterviewedCandidatelist ICL ON ICL.FilledApplicationDate =FA.Date  
    JOIN job.SelectedCandidate SC ON ILC.ID = SC.InterviewedCandidateid 
Where FA.Date > 12458756236442 
ORDER BY FA.Date DESC LIMIT 100000; 
+1

、列に – Sami

答えて

0

あなただけで症状を持っている任意の時間>または<あなたは(あなたがフィールドにインデックスを持っていると仮定して)範囲スキャンを使用しています。場合によっては、オプティマイザがスキャンの実行方法をよりよく知るように、フィールド内の最大値で範囲を制限することが役立ちます。あなたは、あなたがことでも、あなたのクエリにこの情報を使用することができ、連続した範囲を持って知っている場合たとえば、次のようにします。

SELECT * 
    FROM job.FilledApplication FA 
    JOIN job.InterviewedCandidatelist ICL ON ICL.FilledApplicationDate =FA.Date  
    JOIN job.SelectedCandidate SC ON ILC.ID = SC.InterviewedCandidateid 
Where FA.Date > 12458756236442 AND FA.Date <= (12458756236442+100000) 
ORDER BY FA.Date DESC LIMIT 100000; 

は、あなたがデータを知っていることを考えると、それを適用します。常に

とインデックスを見て、あなたがより良いの代わりにSELECT *の

+0

に言及する(条件、条件によって条件またはORDER BYオプションのグループが参加条件に)クエリが実行する適切なものを持って世話をします明白なジョインの問題の他に、ネイティブのndbエンジンよりInnodbエンジンのほうが優れていますが、なぜ同じクエリが10000%高速であるのか分かりません。 – Russia

+0

私の答えでのクエリか、シナリオ?あなたのクエリを意味する場合、両方のシナリオで私も試してみてください:上限(見た目は変わっていますが)は、ほとんどのクエリオプティマイザがより良い計画を立てられるようにするための優れた処理方法を提供します。同じ/類似のパフォーマンスを得るもう1つの方法は次のとおりです。ヒストグラム情報を最新の状態にして、オプティマイザがクエリプランを決定するために使用できる時間を調整する(最後はプロダクション用にはあまり役に立ちませんが、根本的な原因を与える) –

関連する問題