首先,我對此問題的「新手」式性質表示歉意。我在堆棧交換中看到了許多其他緩慢子查詢的問題,但我不確定如何將修復應用於我的問題。我是相當新的超越簡單的選擇,插入任何SQL等SQL - 緩慢子查詢
我有記錄其結果到MySQL表(trends_uint)每五分鐘了各種設備的打印機監控系統。它記錄:設備ID(itemid),時間戳(時鐘)和打印的頁面(value_avg)。從PhpMyAdmin我可以看到表索引是itemid和clock的組合,我猜測它們共同提供了一個獨特的值。到目前爲止,這個表有大約200萬行。
我的查詢如下:
SELECT
tu1.itemid AS trends_uint_itemid,
tu1.clock AS time_value,
tu1.value_avg AS pages
FROM
trends_uint tu1
WHERE
(tu1.clock = (
SELECT max(tu2.clock)
FROM trends_uint tu2
WHERE tu1.itemid = tu2.itemid
)
)
ORDER BY tu1.clock DESC;
我想要做的,就是選擇了最新的值(即value_avg的最高時鐘)爲每個設備(itemid的),所以我可以希望繪製出每臺打印機到目前爲止打印的頁數。
我試着運行它返回以下查詢的EXPLAIN:
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY tu1 ALL NULL NULL NULL NULL 1527815 Using where; Using filesort
2 DEPENDENT SUBQUERY tu2 ref PRIMARY PRIMARY 8 zabbix.tu1.itemid 115301 Using index
任何幫助,將不勝感激。提前致謝。
這樣做訣竅:)。感謝您的及時答覆,並鏈接到SQL小提琴。我知道那裏有一個JS Fiddle網站,所以我應該爲了一個SQL小提琴而獵殺:) – Vasudaprime 2013-03-26 14:11:42