2014-09-21 65 views
0

我在MySQL中有一個查詢,它基本上返回了大約500萬行表中的大量分組結果。我是由8個獨立的東西組成的,並且返回20列左右,其中許多是總和(case when when)計算。我知道這應該需要很長時間,而我的電腦並不是最快的(儘管它不是特別慢)。但它已經運行了9個小時,仍然沒有完成。這是正常的嗎?似乎沒有什麼東西需要這麼長時間。MySQL Query不會停止運行

+1

9小時太長,那些列上是否有適當的索引,您可以發佈表格模式和查詢以查看 – radar 2014-09-21 01:16:21

+1

你可以發佈你的SQL?你使用了很多子查詢嗎? – underscore 2014-09-21 01:21:12

+0

沒有索引。知道這一點,你是否仍然認爲9小時太長?我並不是很熟練掌握SQL,也沒有想過要在列上放置索引。 – japem 2014-09-21 01:24:36

回答

0

問:這是正常的嗎?

A:對於產生大量中間結果集的查詢,查詢可能運行很長時間,甚至超過9個小時。

對於執行不合理數量工作的查詢來說,花費過長的時間並不是不正常的。

但我們通常會避免編寫查詢來完成異常數量的工作。

至於爲什麼查詢做了這麼多的工作......可能是一個非常低效的執行計劃,不使用JOIN操作的索引或巨大的中間結果集。

從另一個會話中,您可以執行SHOW PROCESSLIST來驗證查詢是否真正在運行。輸出將包括會話已經處於當前狀態的已用時間...