すべてのフィルターが適用された SQL クエリは、10 lakhs (100 万) のレコードを返します。すべてのレコードを取得するには 76.28 秒かかります..これは許容できません。時間がかからない SQL クエリを最適化するにはどうすればよいですか。私が使用しているクエリは次のとおりです。
SELECT cDistName , cTlkName, cGpName, cVlgName ,
cMmbName , dSrvyOn
FROM sspk.villages
LEFT JOIN gps ON nVlgGpID = nGpID
LEFT JOIN TALUKS ON nGpTlkID = nTlkID
left JOIN dists ON nTlkDistID = nDistID
LEFT JOIN HHINFO ON nHLstGpID = nGpID
LEFT JOIN MEMBERS ON nHLstID = nMmbHhiID
LEFT JOIN BNFTSTTS ON nMmbID = nBStsMmbID
LEFT JOIN STATUS ON nBStsSttsID = nSttsID
LEFT JOIN SCHEMES ON nBStsSchID = nSchID
WHERE (
(nMmbGndrID = 1 and nMmbAge between 18 and 60)
or (nMmbGndrID = 2 and nMmbAge between 18 and 55)
)
AND cSttsDesc like 'No, Eligible'
AND DATE_FORMAT(dSrvyOn , '%m-%Y') < DATE_FORMAT('2012-08-01' , '%m-%Y' )
GROUP BY cDistName , cTlkName, cGpName, cVlgName ,
DATE_FORMAT(dSrvyOn , '%m-%Y')
私はフォーラムや外部で検索し、与えられたヒントのいくつかを使用しましたが、ほとんど違いはありません. 上記のクエリで使用した結合は、主キーと外部キーですべて結合したままです。このSQLを変更して実行時間を短縮する方法を教えてください....