このスレッドでのディスカッション出力は次のクエリです: Mysql JOIN subquery
現在のフィドルを参照してください: http://sqlfiddle.com/#!2/e97cf/22
create table c_contact
(id INT,
name VARCHAR(20),
securityid INT
);
create table c_monitoring
(started DATE,
ended DATE DEFAULT NULL,
securityid INT
);
SELECT
c_contact.id,
c_contact.name,
c_contact.securityid
FROM c_contact
WHERE c_contact.securityid != ''
AND c_contact.securityid NOT IN
(select securityid
from c_monitoring
where ended is null
group by securityid
)
GROUP BY c_contact.id ;
このクエリをどのように最適化するつもりですか? c_contact テーブルに 100.000 レコード、c_monitoring テーブルに約 10.000 レコードがあります。クエリは 127 の結果行で 30 秒以上かかります。
編集:テーブルを正しくインデックス付けすることでケースが解決されました。