2011-03-06 53 views
0

被應用於以下的SQLite查詢是快速(與源碼3.7.5):極限上內選擇似乎沒有由SQLite的

sqlite> select distinct DOB from (select * from MyTable limit 3) limit 20; 
1958-11-05 
1959-01-01 
1963-06-07 

而下面一個很慢(limit 20除去):

sqlite> select distinct DOB from (select * from MyTable limit 3); 
1933-01-03 
1934-12-24 
1935-01-07 

我覺得這個讓人吃驚,因爲我期望內部limit能夠快速提取只有3行,這樣外部limit 20真的沒關係;但是,這兩個查詢的時間是完全不同的。爲什麼第一個查詢要快得多?

+0

首先要做的是將EXPLAIN添加到查詢中,並檢查它在做什麼 – RichardTheKiwi 2011-03-06 23:02:52

+0

@Richard:這確實非常有用;然而,這需要了解SQLite的虛擬機操作碼...... :) – EOL 2011-03-07 08:20:23

回答