INの計算方法を誰かが説明できるかどうか疑問に思っていますか? 最終的には、このクエリが遅い理由と最適化の方法を見つけようとしています。3 分以上待った後、クエリをキャンセルしたところ、1000 行しか返されなかったので、それほど長くはかからないようです。
SELECT t2.*
FROM report_tables.roc_test_results as t2
WHERE t2.job IN (SELECT DISTINCT(t1.job)
FROM report_tables.roc_test_results as t1
WHERE t1.operation = 'TEST'
AND result = 'Passed'
AND STR_TO_DATE(t1.date_created,'%d-%M-%Y') BETWEEN '2009-10-01'
AND '2009-10-31')
総クエリが何を返すべきかわかりません.2000レコード程度だと推測しなければならない場合、サブクエリは332を返します(Distinctでない場合は336)。
このクエリを最適化する方法について誰か教えてもらえますか? また、サブクエリは毎回計算するのですか、それとも一度だけ計算して保存するのですか?
リクエストに応じて、DESC の結果を... (ちなみに、笑わないでください。私は独学なので、このテーブルはひどく設計されていると確信しています。)
Field Type Null Key Default Extra
------ ----- ----- --- ------- -----
operation varchar(10) NO
tester varchar(25) NO
result varchar(45) NO
fail_mode varchar(45) NO
primary_failure varchar(25) NO
ref_des varchar(45) NO
rf_hours varchar(15) NO
ac_hours varchar(15) NO
comments text NO
job varchar(15) NO
rma bigint(20) unsigned NO
item varchar(45) NO
item_description text NO
serial varchar(25) NO
created_by varchar(25) NO
collection bigint(20) unsigned NO PRI
date_created varchar(15) NO