約1500万行、すべてのvarcharデータを含む大きなテーブルがあります。3つの自己テーブル結合を持つ自己結合クエリを実行しました。次のようになります。
SELECT sj1.uid FROM tbl sj1
JOIN tbl sj2 ON sj1.uid = sj2.uid
JOIN tbl sj3 ON sj1.uid = sj3.uid
WHERE sj1.product_code = 'tb'
AND sj2.product_code = 'im'
AND sj3.product_code = 'mg'
2時間以上経過しました。確認するshow full processlist
と、ステータス送信データのみが表示されます。このクエリまたはその他の関連するステータスによって処理された行数を知る方法があるかどうかを知りたいです。このクエリが終わりに近づいている可能性があり、中断された場合、リソースの大きな浪費になることを疑って、このクエリを強制終了することさえできません。これで何か助けはありますか?
これがEXPLAIN
私を説明したものです:
+----+-------------+-------+------+-------------------+-------------------+---------+----------------------------------------+----------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+-------------------+-------------------+---------+----------------------------------------+----------+-------------+
| 1 | SIMPLE | a | ALL | ix_unique_user_id | NULL | NULL | NULL | 14251264 | Using where |
| 1 | SIMPLE | b | ref | ix_unique_user_id | ix_unique_user_id | 103 | ph_usertrack_analysis.a.unique_user_id | 2 | Using where |
| 1 | SIMPLE | c | ref | ix_unique_user_id | ix_unique_user_id | 103 | ph_usertrack_analysis.a.unique_user_id | 2 | Using where |
+----+-------------+-------+------+-------------------+-------------------+---------+----------------------------------------+----------+-------------+
したがって、unique_user_idのインデックスが使用されています