我們不能讓這種簡單的查詢工作:查詢永遠掛在與分組
SELECT * FROM
(SELECT h.*, h.NewValue AS STATUS,
(SELECT h2.CreatedDate
FROM siebel_service_request_history h2
WHERE h2.Field = 'Status' AND h2.CreatedDate > h.CreatedDate AND
h2.SiebelID = h.SiebelID
ORDER BY h2.CreatedDate
LIMIT 1
) AS nextCreatedDate
FROM siebel_service_request_history h WHERE h.Field ='Status') h
GROUP BY h.SiebelID, h.Status
它正常工作與分組由SiebelID
(但慢)和它掛像永遠如果再加上由Status
分組。但是,爲了獲得我們想要的數據,我們需要包含在分組中的兩個字段。
我們擁有和salesforce_case_history表一樣的查詢(它運行速度非常快,而且確切地說,我們在兩個表中都有大致相同的記錄數(salesforce_case_history - - 1159870記錄VS siebel_service_request_history - 1202865記錄)) :
SELECT * FROM (SELECT h.*, h.NewValue AS STATUS,
(SELECT h2.CreatedDate
FROM salesforce_case_history h2
WHERE h2.Field = 'Status' AND h2.CreatedDate > h.CreatedDate AND
h2.CaseId = h.CaseId
ORDER BY h2.CreatedDate
LIMIT 1
) AS nextCreatedDate
FROM salesforce_case_history h WHERE h.Field ='Status'
) h
GROUP BY h.CaseId, h.Status
我們還創建了siebel_service_request_history
同一綜合指數爲內子選擇搜索包括三個字段(SiebelID
,CreatedDate
,Field
)正如我們在salesforce_case_history創建的表。我們嘗試了幾乎所有我們知道的事情,但不幸的是沒有提出這個問題的根本問題。
因爲您正在從'h'中選擇,這是一個您即時創建的「表格」,因此它沒有索引。由於您每次查詢時都重新創建了分組,因此您無法從該分組獲得任何速度。 – Nanne
爲什麼downvote ??據我認爲這個問題是好的 – Dhaval
這可能是因爲你只是轉儲一個很慢的查詢。沒有「這是我的目標」,沒有解釋問題,只是「這個查詢很慢」。根據我的評論(我認爲),這是合乎邏輯的,但速度很慢,但我實際上無法回答你的問題,因爲我不知道你想要什麼。您可能需要重新編寫查詢結構。這意味着目前形式的問題並不清楚。 – Nanne