0
我有SQLite中兩個表:from_original
和from_binary
。我想要LEFT OUTER JOIN拉出from_original
中不存在的記錄from_binary
。問題是我寫的查詢沒有完成(大約1小時後我終止了它)。任何人都可以幫我理解爲什麼?sqlite查詢沒有完成 - 錯誤的索引,或只是太多的數據?
我會爲每個在我的查詢字段定義的索引,但explain query plan
只提到指標之一將被引用。我不確定這是否是問題,還是隻是數據太多的問題。
下面是該查詢我試圖運行:
select * from from_original o
left outer join from_binary b
on o.id = b.id
and o.timestamp = b.timestamp
where b.id is null
的表都有大約400萬條記錄:
我已經定義的索引的所有id
和timestamp
字段(請參閱帖子末尾的架構),但explain query plan
僅指示將使用其中一個id索引。
這裏是表架構,其中包括索引定義:
感謝,這有助於(今<30秒完成)。我猜這是最有幫助的綜合指數?正如你所說,反正所有的'b'列都是'NULL',所以我不認爲在我的查詢中拉他們會是一個問題('select *'vs'select o。*')? – Roberto
@Roberto。 。 。綜合指數應該是提高績效的主要原因。如果你想'NULL'值'b'列,你應該能夠添加它們,對性能影響最小。 –
這不是我有興趣看到空值。我只是在尋求自己的理解和好奇心。感謝您的解釋。 – Roberto