我想使用索引来加快两个SQLite视图的左联接。但是,它似乎没有使用索引。
我有一个称为RoadsPolyline的SpatiaLite空间表。我用
添加索引create index idx_RoadNames on
RoadsPolyline(RoadName)
然后我创建一个非常简单的视图
CREATE VIEW test as
select *
from RoadsPolyline
当我查询
explain query plan
select *
from test as t1
left join test as t2 on t1.RoadName = t2.RoadName
我得到了(仅详细列):
SCAN TABLE RoadsPolyline
SCAN TABLE RoadsPolyline
SEARCH SUBQUERY 1 AS t2 USING AUTOMATIC COVERING INDEX (RoadName=?)
最有趣的是,当我在联接之前删除“ left”并使其成为内部联接时,我得到:
SCAN TABLE RoadsPolyline
SEARCH TABLE RoadsPolyline USING INDEX idx_RoadNames (RoadName=?)
因此它将索引用于内部联接,但不用于左联接。但是,对于更复杂的查询,我需要使用左联接。
我正在使用SpatiaLite 4.3.0a,SQLite版本3.8.11.1。