我有兩個表:一個項目列表和排序順序在某些group_id範圍。 項目屬於一個組或共同(group_id = 0)。SQLite左連接右表中的兩個條件
我想用正確的排序順序查詢該組的所有常用組和組項。排序順序爲-1的所有項目必須被解僱。不包含關聯的sort_order的項目必須包含在內。
錯誤(天真)查詢:
SELECT items.*
FROM items LEFT JOIN sort_order ON items._id = sort_order.item_id
WHERE (items.group_id=0 OR items.group_id=14)
AND sort_order.entity_id=14
AND sort_order.sort >= 0
就像一個內部聯接 - 有沒有相應的排序順序的項目被解僱。
慢查詢:
SELECT items.*
FROM items LEFT JOIN sort_order
ON items._id = sort_order.item_id AND sort_order.entity_id=14
WHERE (items.group_id=0 OR items.group_id=14)
AND sort_order.sort >= 0
隨着〜5.000條目SORT_ORDER和〜1500項的查詢需要〜2秒。
我的問題:是否有更好/正確的方法來處理這個問題?
請寫出這作爲一個答案。 –