2013-03-12 134 views
3

我有一個整數集合與過濾行ID,其中我試圖搜索序列/範圍來優化MySQL選擇查詢。給你舉個例子:優化MySQL閱讀模式

的整數集合可以是非常分散:

[1,2,88,101,200] = Sequence(1-2,88,101,200) 

還是很全:

[1,2,3,4,..,198,199,200] = Sequence(1-200) 

是否有任何Java的算法來找出在一個序列收集或改善我的閱讀模式?

+0

恕我直言,你應該能夠使用一個或兩個循環來收集範圍。我懷疑是否有任何庫函數可以做到這一點。 – wilx 2013-03-12 13:21:53

回答

1

您的收藏需要多長時間?除非有數百萬個項目,否則將一個集合完全加載到內存中,排序並掃描範圍可能是最快的。

在排序列表中,查找範圍並不重要。只需按順序掃描;如果下一個元素不是前一個元素+ 1,則一個範圍剛結束,另一個開始。

+0

收集品在「最差」情況下約有1'000'000件物品,其中某些情況下只需要40-50件物品。 – 2013-03-12 13:27:02

+0

問題是,這些40-50項可能不是連續的,導致大量的單個MySQL查詢=低性能。 – 2013-03-12 13:34:26