我有一個看起來像這樣的數據庫方案(見http://sqlfiddle.com/#!2/4c9b4/1/0):SQL查詢性能優化 - 取最大值(B)爲對應的A
create table t(id int, dataA int, dataB int);
insert into t select 1 ,1 ,1;
insert into t select 2 ,1 ,2;
insert into t select 3 ,1 ,3;
insert into t select 4 ,2 ,1;
insert into t select 5 ,2 ,2;
insert into t select 6 ,2 ,4;
insert into t select 7 ,3 ,1;
insert into t select 8 ,3 ,2;
insert into t select 9 ,4 ,1;
和SQL查詢,以獲取「數據A」的列表最大的「數據B」對應於「數據A」
SELECT * FROM t a WHERE dataB = (SELECT MAX(dataB) FROM t b WHERE b.dataA = a.dataA)
它的工作原理確定,但它可能需要長達90秒的在我的數據集運行。
如何提高此查詢的性能?
+1:在我的經驗中,MySQL確實非常普遍,因爲這種類型的JOIN比使用相關的子查詢要快得多。也就是說,至少在'dataA'上或最好在'dataA,dataB'上應該有一個'INDEX'。 – MatBailie
確實。這工作得很好,很快。我現在發現我得到了一些重複的數據,但這是一個單獨的問題。謝謝 –