2012-04-24 24 views
1

執行SQLite查詢時,返回的數據集的大小是否會影響查詢所花費的時間?讓我們假設這個問題,我實際上並沒有訪問結果中的任何數據,我只想知道查詢本身是否需要更長的時間。讓我們也假設我只是簡單地選擇所有的行並且沒有WHERE或ORDER BY子句。返回大型結果集的SQLite查詢需要更多時間嗎?

例如,如果我有兩個表A和B.讓說表A有一百萬行和表B有10行,並且這兩個表具有相同的數量和類型的列。選擇表A中的所有行需要比選擇表B中的所有行花費更長的時間?我的問題How does a cursor refer to deleted rows?。我在猜測,如果在查詢期間SQLite創建了數據副本,那麼返回大型數據集的查詢可能需要更長的時間,除非只有在db中的數據發生更改時才複製查詢結果數據的優化而查詢仍然存在?

回答

0

根據一些細節,是的,查詢可能需要不同的時間量。

示例:我有一個包含約20k條目的表。我做GLOB搜索,必須嘗試每一行,並用LIMIT。如果滿足LIMIT,則查詢可以提前停止。如果不是,它必須通過整個表(或JOIN)。因此,搜索結果太多的搜索會比僅使用少量結果的搜索更快。

如果查詢必須運行相同數量的數據,我不認爲在選定的行數越來越少之間存在顯着差異。當然,可能會有IO成本。

+0

我已經闡明瞭我的問題,我只關注從單個表中選擇所有行的情況,沒有WHERE,ORDER BY,LIMIT或JOIN子句。 – satur9nine 2012-04-25 17:20:52

+0

好的。我會說答案是一樣的。在表A中運行更多行需要更長的時間。索引可能會使這一步消失。如果你選擇全部,我會預期這些行會以IO(加上開銷)允許的速度出現。更多數據以相同的速率將需要更長時間。 – XTL 2012-04-26 07:00:15