我已經創建了下面的查詢,以顯示這是一定值之間的行數「頻率圖」:因爲它是相當的時間優化我的SQL查詢
SELECT CONCAT('0 - ', M.MaxField1) AS 'Part',COUNT(*)
FROM TABLE1 P, (SELECT (MAX(Field1)*(1/10)) AS MaxField1 FROM TABLE1) AS M
WHERE P.Field1<M.MaxField1
UNION ALL
SELECT CONCAT((M.MaxField1), ' - ', (M.MaxField1*2)) AS 'Part',COUNT(*)
FROM TABLE1 P, (SELECT (MAX(Field1)*(1/10)) AS MaxField1 FROM TABLE1) AS M
WHERE P.Field1>=(M.MaxField1) AND P.Field1<(M.MaxField1*2)
UNION ALL
SELECT CONCAT((M.MaxField1*2), ' - ', (M.MaxField1*3)) AS 'Part',COUNT(*)
FROM TABLE1 P, (SELECT (MAX(Field1)*(1/10)) AS MaxField1 FROM TABLE1) AS M
WHERE P.Field1>=(M.MaxField1*2) AND P.Field1<(M.MaxField1*3)
UNION ALL
SELECT CONCAT((M.MaxField1*3), ' - ', (M.MaxField1*4)) AS 'Part',COUNT(*)
FROM TABLE1 P, (SELECT (MAX(Field1)*(1/10)) AS MaxField1 FROM TABLE1) AS M
WHERE P.Field1>=(M.MaxField1*3) AND P.Field1<(M.MaxField1*4)
UNION ALL
SELECT CONCAT((M.MaxField1*4), ' - ', (M.MaxField1*5)) AS 'Part',COUNT(*)
FROM TABLE1 P, (SELECT (MAX(Field1)*(1/10)) AS MaxField1 FROM TABLE1) AS M
WHERE P.Field1>=(M.MaxField1*4) AND P.Field1<(M.MaxField1*5)
UNION ALL
SELECT CONCAT((M.MaxField1*5), ' - ', (M.MaxField1*6)) AS 'Part',COUNT(*)
FROM TABLE1 P, (SELECT (MAX(Field1)*(1/10)) AS MaxField1 FROM TABLE1) AS M
WHERE P.Field1>=(M.MaxField1*5) AND P.Field1<(M.MaxField1*6)
UNION ALL
SELECT CONCAT((M.MaxField1*6), ' - ', (M.MaxField1*7)) AS 'Part',COUNT(*)
FROM TABLE1 P, (SELECT (MAX(Field1)*(1/10)) AS MaxField1 FROM TABLE1) AS M
WHERE P.Field1>=(M.MaxField1*6) AND P.Field1<(M.MaxField1*7)
UNION ALL
SELECT CONCAT((M.MaxField1*7), ' - ', (M.MaxField1*8)) AS 'Part',COUNT(*)
FROM TABLE1 P, (SELECT (MAX(Field1)*(1/10)) AS MaxField1 FROM TABLE1) AS M
WHERE P.Field1>=(M.MaxField1*7) AND P.Field1<(M.MaxField1*8)
UNION ALL
SELECT CONCAT((M.MaxField1*8), ' - ', (M.MaxField1*9)) AS 'Part',COUNT(*)
FROM TABLE1 P, (SELECT (MAX(Field1)*(1/10)) AS MaxField1 FROM TABLE1) AS M
WHERE P.Field1>=(M.MaxField1*8) AND P.Field1<(M.MaxField1*9)
UNION ALL
SELECT CONCAT((M.MaxField1*9), ' - ', (M.MaxField1*10)) AS 'Part',COUNT(*)
FROM TABLE1 P, (SELECT (MAX(Field1)*(1/10)) AS MaxField1 FROM TABLE1) AS M
WHERE P.Field1>=(M.MaxField1*9)
任何建議,以優化這個腳本消費?
您的直方圖桶均勻間隔和大小? – 2013-03-03 14:14:36
當然,他們是 - 我只是再看看代碼。 – 2013-03-03 14:15:29
您能否提供樣本數據(sqlfiddle?)。 – 2013-03-03 14:32:55