2012-07-09 44 views
1

我有一個包含大約1500萬行,所有varchar數據的大表。我跑了自連接上查詢具有3自我表連接,這樣的事情:任何方式來知道有多少行讀取MySQL中的select語句?

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指數被用來

+1

您最近爲表格編制過索引嗎? – JMK 2012-07-09 14:52:07

+0

記錄緩慢的查詢並使用EXPLAIN來幫助優化它們。 EXPLAIN也會給出行數。 – jeremyharris 2012-07-09 14:53:20

+1

據我所知,沒有辦法知道已經處理了多少行。 – 2012-07-09 14:57:32

回答

1

不,你不能從MySQL獲取有關查詢進度的任何信息。

+0

太傷心了:( – Shades88 2012-07-09 15:04:18

+0

@ Shades88:對,抱歉是壞消息的持有者。 – chaos 2012-07-09 15:09:18

-1

Index你需要列的表格,請參見Count也。

SELECT count(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'; 

,如果需要,將group by

+2

這並不回答這個問題.. – 2012-07-09 14:57:59

+0

我的理解是,他需要行計數他的查詢將按照給定的條件進行處理。 – manurajhada 2012-07-09 15:00:33

+0

然後你應該仔細閱讀這個問題。 – 2012-07-09 15:01:41