根據測試結果 Learned Index 的測試結果是優於 B-Tree,從前面實驗結果可以看到,不論是哪種分布的資料,
B-Tree 都遠不及阿~
但是 !
並不是每種情況 Learned Index 都比較優,而是某種特殊情況,甚麼特殊情況呢 ?
Learned Index 是學習固定、既有的資料,換句話說,Learned Index 只能對已知的資料進行學習
當有新的資料插入時,Learned Index 就必須重新訓練,來擬合新的資料分布。
所以其實想一想, Learned Index 之所以能獲勝,因為測試只針對固定的資料進行測試阿 ! 而且測試項目只有查詢效能、空間成本,那刪除或插入呢 ?
Kraska et al. 在測試前就有說,他們不把訓練時間算進時間成本裡面,因此,如果要比插入、更新資料,B-Tree反而會比較優,因為B-Tree的查詢、插入、刪除、更新都在固定的時間複雜度以內 !
因此我們可以歸納出一個表格 :
B-Tree | Learned Index | |
---|---|---|
Search Performance | V | |
Memory Space | V | |
Insert Performance | V | |
Flexibility | V |
對於固定的資料,選擇 Learned Index最佳,不論是查詢效能還是記憶體空間效能都比較優,但是如果考慮新資料的插入以及索引的靈活度,反而選擇 B-Tree 會比較佳 !