我在使用sqlite3加入记录时遇到了一些麻烦。我有两个表:tableA和tableB。 tableA有列col1和col2,而tableB有col3和col4。我想根据col2和col3中的信息将col4加入tableA。所以我在tableA中添加了另一列col 5,并尝试了:
UPDATE tableA
SET col5 =
(SELECT col4 from tableB
WHERE tableA.col2 = tableB.col3);
我的tableA大约有300,000行,而tableB超过一百万行,这需要很长时间才能运行。
我知道有一种方法可以使用JOIN子句来做同样的事情。所以我的问题是:
这有关系吗?如果我使用JOIN,它会跑得更快吗?
2.你是如何使用联接做到的?
3.还有其他方法可以改善表现吗?
非常感谢!
答案 0 :(得分:1)
SQLite不支持UPDATE语句中的连接(仅在子查询中,但这在这里没有意义)。
即使支持联接,它们也会以与查询相同的方式(并具有相同的性能)实现。
要加快此查询速度,tableB
行的col3
行的查找需要变得更快。
为此,请在col3
列上创建索引。