初歩的な質問ですが教えていただけると助かります。私は次のSQLを適用しています:
INSERT INTO t03_hesid_history(uniqueID, hes_data_all_years.extract_hesid, FIELD1, FIELD2)
SELECT uniqueID, hes_data_all_years.extract_hesid, FIELD1, FIELD2
FROM hes_data_all_years
INNER JOIN T02_hesid_grouped
ON hes_data_all_years.extract_hesid = T02_hesid_grouped.extract_hesid;
hes_data_all_years テーブルには 1 億 8800 万のレコードがあり、T02_hesid_grouped テーブルには 80,000 のレコードがあります。T02_hesid_grouped テーブルには、インデックス付きの extract_hesid という単一の (一意の) フィールドがあります。hes_data_all_years には多くのフィールドがあり、結合されている extract_hesid フィールドに 1 つのインデックスがあります。
このクエリは、T02_hesid_grouped フィールドに一致する hes_data_all_years のすべてのレコードを抽出することを目的としています。出力で 1 ~ 2m のレコードが提供されることを期待しています。
クエリには約 4 時間かかります...
データセットのサイズによる時間の長さですか、それとも実行できる最適化はありますか? どうもありがとう!!
SELECT 部分の EXPLAIN 出力を以下に示します。
1 SIMPLE T02_hesid_grouped index I_HESID I_HESID 43 79824 Using index
1 SIMPLE hes_data_all_years ref I_HESID I_HESID 43 hes.T02_hesid_grouped.extract_hesid 1 Using where