首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全表扫描或索引扫描

全表扫描或索引扫描
EN

Stack Overflow用户
提问于 2017-04-08 00:19:17
回答 1查看 290关注 0票数 1

以下查询使用了较大的Oracle表A和较大的全局临时表TB

代码语言:javascript
复制
UPDATE  A
SET     A.field0 = ( SELECT SUM(TB.field0)
                     FROM   TB
                     WHERE  TB.field1 = A.field1 AND
                            TB.field2 = A.field2 AND
                            TB.field3 = 'value' )
WHERE   EXIST ( SELECT 1
                 FROM   TB
                 WHERE  TB.field1 = A.field1 AND
                        TB.field2 = A.field2 AND
                        TB.field3 = 'value' );

基本上,EXIST条件只是用来检查记录是否存在。现在,对于此查询,如果在A.field0A.field1上有索引,但在TB上根本没有索引,那么它将执行全表扫描还是索引扫描?此外,WHERE条件是必要的吗?它对性能有什么影响吗?

EN

回答 1

Stack Overflow用户

发布于 2017-04-08 00:39:54

由于TB上没有索引,SELECT中的SQL子查询将对TB进行全表扫描。如果TB表很大,那么在TB.field1TB.field2TB.field3上创建索引可以显著提高性能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43282868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档