2013-02-19 39 views
0

嗨,我使用的MySQL,重新創建代碼顯示配置變量在MySQL

SHOW PROFILES; 

返回一個長長的名單,與行類似這樣的例子:

|Query_ID|Duration  |Query 
>| 9 | 0.00028550 | INSERT INTO Duration(Status,DURATION,Query_ID)| 

我試圖複製這個,所以我可以將結果插入到表中並添加WHERE子句。

所以我想這

SELECT Query_ID, STATE, FORMAT(DURATION, 6) AS DURATION 
FROM INFORMATION_SCHEMA.PROFILING 
WHERE QUERY_ID = 9; 

但這返回一個較低的水平視圖(我不希望):

開始0.000053打開表0.000088

是哪個相同:

SHOW PROFILE; 

我將如何重新創建SHOW PROFILES?通過QUERY_ID

INSERT INTO Duration(Query_ID,Status,DURATION) 
SELECT * FROM SHOW PROFILE 
WHERE PROFILE.QUERY_ID = 9; 

感謝

+0

'SHOW PROFILES'不包括'Status'列的輸出,讓你在尋求回到這裏?在我的回答中,我返回了該查詢最近完成的服務器狀態。 – eggyal 2013-02-19 21:25:36

+0

對不起,如果我不清楚,我正在尋求複製SHOW PROFILES的確切結果; QUERY_ID,DURATION,QUERY。但我不清楚在哪裏或如何做到這一點。 – edited 2013-02-19 21:34:10

回答

1

組: 這樣我就可以這樣執行的東西。要獲得該狀態,您需要STATE的記錄與groupwise maximumSEQ;獲得持續,只是總結每個記錄的DURATION組中:

INSERT INTO Duration 
    (Query_ID, Status, DURATION) 
SELECT QUERY_ID, STATE, t.DURATION 
FROM INFORMATION_SCHEMA.PROFILING JOIN (
    SELECT QUERY_ID, MAX(SEQ) AS SEQ, SUM(DURATION) AS DURATION 
    FROM  INFORMATION_SCHEMA.PROFILING 
    WHERE QUERY_ID = 9 
    GROUP BY QUERY_ID -- superfluous in the presence of the above filter 
) t USING (QUERY_ID, SEQ) 
+0

謝謝!這確實會返回我正在查找的Query_ID和持續時間。但SHOW PROFILES中的QUERY列必須存儲在某個位置? – edited 2013-02-19 21:45:25