oracle中truncate和索引的问题
我们程序的需求是 从其他系统采集数据到我们系统中,然后再进行处理。
每天晚上凌晨先truncate掉我们系统中的表,然后采集当天的数据到数据库。采集方式是用ctl控制文件方法导出db文件再把db文件导入我们数据库的方法,不是直接insert。
采集到我们系统中的表有20张,数据量为1000W以上的大概有八张,我把这20张表称为原始表。我们用这20张原始表通过SQL查询语句与对应的业务需求做成10张报表(结果表)。
因为有几张表数据量很大,所以查询起来的时候速度很慢,所以想到了建立索引的方式来提高效率。
上面是我们生成报表的的类似语句。
那么问题来了:
1,我所了解的索引一般是建立在不常变更的表上面的,但是我们的表每天都会被truncate,这样是不是会影响效率?truncate有索引和没索引的表速度一样么?
2,虽然我们的数据不是用insert到数据库的,导入数据会因为表有索引会对导入速度有影响么?顺便问下,如果insert到数据库,因为存在索引,是不是效率很低?
3,有没有什么其他好办法来提高效率。
每天晚上凌晨先truncate掉我们系统中的表,然后采集当天的数据到数据库。采集方式是用ctl控制文件方法导出db文件再把db文件导入我们数据库的方法,不是直接insert。
采集到我们系统中的表有20张,数据量为1000W以上的大概有八张,我把这20张表称为原始表。我们用这20张原始表通过SQL查询语句与对应的业务需求做成10张报表(结果表)。
因为有几张表数据量很大,所以查询起来的时候速度很慢,所以想到了建立索引的方式来提高效率。
insert into 结果表1 select col1,col2,col3... from 原始表1,原始表2 where XXX and XXX....
上面是我们生成报表的的类似语句。
那么问题来了:
1,我所了解的索引一般是建立在不常变更的表上面的,但是我们的表每天都会被truncate,这样是不是会影响效率?truncate有索引和没索引的表速度一样么?
2,虽然我们的数据不是用insert到数据库的,导入数据会因为表有索引会对导入速度有影响么?顺便问下,如果insert到数据库,因为存在索引,是不是效率很低?
3,有没有什么其他好办法来提高效率。
...全文
相关推荐
Oracle面试时候的几个常见的技术问题
以上就是Oracle面试中可能出现的一些技术问题及其解答,涵盖了数据库管理、备份恢复、性能优化等多个方面。在面试中,对这些问题的深入理解和熟练解答将有助于展示你的Oracle专业技能。
truncate 与drop 的区别
Oracle数据库管理中,TRUNCATE与DROP是两个常用的语句,用于删除数据或表结构,但它们在使用方式、性能和功能上存在明显的差异。
Oracle性能问题总结
Oracle 性能问题总结 Oracle 性能问题是数据库管理员和开发者经常遇到的一个棘手问题,本文总结了 Oracle 性能问题的解决方案,涵盖了物理模型优化、索引相关、SQL 相关、表设计和其他几个方面
Oracle表删除大量数据(千万)后查询变慢问题(原因分析)
在解决问题之前,首先需要使用 delete 语句删除大量数据,然后使用 truncate table 语句清空表空间。
delete,truncate和drop的区别
### delete,truncate和drop的区别详解#### 一、概述在数据库管理中,经常会遇到需要删除数据或表的情况。


