SELECT
a.idmotcle,
a.motcle,
count(DISTINCT c.id) as 'Programs',
count(DISTINCT d.id) as 'Searches',
FORMAT(count(DISTINCT d.id)/count(DISTINCT c.id),2) as 'S/P'
FROM motcle a
INNER JOIN motcle b
ON b.idmotcle=a.idmotcle AND a.archive=0
LEFT JOIN masters_keywords_nton c
ON c.id_motcle=a.idmotcle
LEFT JOIN master_search_log_tbl d
ON d.search_string LIKE concat('%',a.motcle,'%')
GROUP BY a.idmotcle
ORDER BY a.motcle
テーブル - 総レコード数
斑点 - 200
masters_keywrods_nton - 1300
master_search_log_tbl - 4800
ON 句で使用されるすべてのフィールドにインデックスが既にあります。
クエリを本番環境で実行すると、現在 62.887 秒かかります。
結合とカウントを行うためのより良い方法があると思いますか?