Kar*_*rim 3 sql performance sql-server-ce
以及这个问题在sql server中是通用的,
我在所有字段上都有索引.
同样的查询,但ID IN(int ID列表)非常快.
我试图将查询更改为OUTER Join,但这只会让情况变得更糟.所以有关为什么会发生这种情况以及如何解决这个问题的任何提示?
那是因为索引对这种查询并不真正有用,因此数据库必须进行全表扫描.如果查询(由于某种原因)慢于简单的"SELECT*FROM TABLE",请执行此操作并过滤程序中不需要的ID.
编辑:通过您的评论,我认识到您使用子查询而不是列表.因此,有三种可能的方法(希望其中一种更快):
原始声明:
select * from mytable where id not in (select id from othertable);
Run Code Online (Sandbox Code Playgroud)
备选方案1:
select * from mytable where not exists
(select 1 from othertable where mytable.id=othertable.id);
Run Code Online (Sandbox Code Playgroud)
备选方案2:
select * from mytable
minus
select mytable.* from mytable in join othertable on mytable.id=othertable.id;
Run Code Online (Sandbox Code Playgroud)
备选方案3 :(丑陋且难以理解,但如果其他一切都失败了......)
select * from mytable
left outer join othertable on (mytable.id=othertable.id)
where othertable.id is null;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13386 次 |
| 最近记录: |