暂无图片
TABLE ACCESS FULL前面没有“*”怎么办?
我来答
分享
语菲
2023-06-04
TABLE ACCESS FULL前面没有“*”怎么办?

TABLE ACCESS FULL前面没有“*”怎么办?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新

如果表很小,那么不需理会,小表不会产生性能问题。

如果表很大那么就要询问开发人员是不是忘了写过滤条件,一般不会遇到这种情况。

如果真的是没有过滤条件,比如一个表有10GB,但是没有过滤条件,那么它就会成为整个SQL的性能瓶颈。这个时候就需要查看SQL语句中该表访问了多少列,如果访问的列不多,就可以把这些列组合起来,建立一个组合索引,索引的大小可能只有1GB左右。可以利用INDEX FAST FULL SCAN代替TABLE ACCESS FULL。在访问列不多的情况下,索引的大小(Segment Size)肯定比表的大小(Segment Size)小,那么就不需要扫描10GB了,只需要扫描1GB,从而达到优化目的。

如果SQL语句里面要访问表中大部分列,这时就不应该建立组合索引了,因为此时索引大小比表更大,可以通过其它方法优化,比如开启并行查询,或者更改表连接方式,让大表作为嵌套循环的被驱动表,同时在大表的连接列上建立索引。

暂无图片 评论
暂无图片 有用 5
打赏 0
暂无图片
回答交流
Markdown


请输入正文
提交
相关推荐
主库修改redo log会自动同步到DG备库吗?
回答 1
在MySQL的主从复制(MasterSlaveReplication)中,主库修改的redolog并不会自动同步到备库(也称为从库)。主库的redolog是用于持久化事务的日志记录,而备库通过读取主库
请教个问题:有没有哪位兄弟实操过,当EXPDP一张大表时,不想导出其LOB列,能不能通过将其设置为UNUSED来实现?
回答 1
看看这个管不管用:https://www.modb.pro/db/706不要设置Unused。
请问各位大佬, Windows环境,12.2,数据库应该是被OS kill掉了
回答 2
内存出现了问题,重启下操作系统吧。
创建只毒视图
回答 3
你创建的是只读视图,表示不能对视图进行修改,所以不用加withcheckoption官方文档里面有相关介绍,你可以去看看。https://docs.oracle.com/cd/E1188201/ser
列级(敏感字段)访问控制
回答 3
如果是应用那写一个不带那个字段的SQL就可以了。另外如果觉得创建视图的改动大,那DATAMASK和VPD恐怕更不能接受了,你可以查下相关资料。
9i和11g同步数据
回答 3
也许是测试一下提问功能
oracle 11.2.0.4 多路径配置变更问题
回答 2
https://developer.aliyun.com/article/248999
11204RAC,ORACLE_HOME的权限让我误修改了,现在想要增删节点,是应该先删,还是新增一个再删有问题的?
回答 2
出于好奇,楼上专家的命令测试了一把,AIX环境下不可使用,Linux环境可用,生成的文件内容简略如下:之前也遇到过权限错乱的问题,使用permission.pl在节点1获取正确的权限然后将其刷到节点2
Oracle中的dba_soure这个表为什么没有存储过程这一列?
回答 1
PROCEDURE就是存储过程
oracle备份整个数据库,backup database,测试删除一个表,恢复不了?
回答 3
根据backupdatabase的备份可以先恢复到一个测试库,然后从测试库导出这张表,在将其导入到生产环境。或者问清楚怎么删除的,droptableXX的话,一般回收站是开启的,可以从回收站捞出来;d