UPDATE... WHERE EXISTS... 引起full table scan
首先我并不是用SQL Server,而是一个基于Java的开源数据库HSQLDB,由于没有其他地方可以问SQL的问题,不得已贴到这里来,望见谅。
具体问题是这样的:
drop table a if exists;
create table a (col0 int);
create index ia on a (col0);
insert into a values (1);
drop table b if exists;
create table b (col0 int);
create index ib on b (col0);
insert into b values (1);
当我调用
explain plan for UPDATE a SET col0 = null WHERE EXISTS (SELECT col0 FROM b WHERE a.col0 = b.col0);
发现数据库对于a表采用了full table scan,但是在WHERE里面却是正确使用了索引。请问应该如何做才能避免对a表的full table scan?谢谢。