我创建了一个SQL表foo,如下所示
创建表
CREATE TABLE foo(id INTEGER, name TEXT) ;
插入数据
INSERT INTO foo VALUES(1, 'Alex');
创建索引
CREATE INDEX bar_idx ON foo(id) ;
现在插入一些额外的数据
INSERT INTO foo VALUES(1, 'Bob');
它是否自动更新以前在列中创建的索引?
我创建了一个SQL表foo,如下所示
CREATE TABLE foo(id INTEGER, name TEXT) ;
INSERT INTO foo VALUES(1, 'Alex');
CREATE INDEX bar_idx ON foo(id) ;
INSERT INTO foo VALUES(1, 'Bob');
它是否自动更新以前在列中创建的索引?
2条答案
按热度按时间dm7nw8vv1#
是的,索引总是保持最新的。如果发生大量行的批量更改,您可能需要运行REINDEX,但通常不需要。
rkttyhzu2#
是的,如果你只是简单地输入数据,那么它将被更新,但是如果你插入另一行,那么你需要显式地重建或重新组织索引,以确保它反映数据的当前状态。
在您的示例中,当您在'id'属性上创建索引时,稍后当您插入另一行时,索引将更新
你必须使用REINDEX bar_idx;
虽然不必运行此