2016-12-29 45 views
0

我有由列的數據庫:對於Android SQLite,哪種方法更有效?

bookId, pageNbr, text 

其中BOOKID和pageNbr進行索引。

現在,在使用它作爲我的列表視圖的數據模型,我應該使用初始化光標:

SELECT bookId, pageNbr, text 
FROM table 
WHERE bookId BETWEEN 1 AND 5 
AND pageNbr BETWEEN 100 AND 500 

或者我應該得到每個項目的每一行,每次getView使用這款名爲:

SELECT bookId, pageNbr, text 
FROM table 
WHERE bookId = VAR_BOOK_ID 
AND pageNbr = VAR_PAGE_NBR 

是否有任何性能差異? (如果對於每個查詢,可能有開銷?)

+0

當然,一個項目的性能開銷可能超過一千個 –

+0

但與第一個更大的查詢相比,怎麼樣? –

+0

這就是我所說的 - 第一種方式不太理想,但至少你只打一次數據庫。 –

回答

1

使用任何查詢更容易處理(即第一個)。這導致了最高效的開發性能。

想想優化只有當你措施一個實際問題。

至於查詢:只有一個BETWEEN可以使用索引進行優化,因此您只需要索引具有較高選擇性的列。 如果存在兩列索引,那麼使用=進行兩次查找效果最佳。

+0

你能簡單地告訴我什麼是選擇性?是否具有最大數量的可能值具有最大選擇性的列? –

+0

比較篩選出最多行的列(以便儘可能少的行需要從實際表中讀取)。 –