
正文
oracle建立索引很慢,oracle 建立索引 不起作用
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
oracle走索引查询变慢
1、首先,有可能是因为你的统计信息没有更新,使用命令Analyze table tablename compute statistics;其次,你的where条件可能用到了函数,使得执行计划没有用到索引;再之,要看看SQL的执行计划,具体问题具体分析。
2、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) I/O吞吐量小,形成了瓶颈效应。 没有创建计算列导致查询不优化。
3、这时正常的,oracle会自动统计你查询的内容,如果发现频率高就提升其优先级,长期不用就降低优先级。一个新建连接开始会比较慢,但操作几次后就会明显变快。另外偶尔也会有恰好满足你查询条件的记录就在搜索队列靠前位置的可能。
相关问答
Q1: oracle3000万条数据建索引多久
时间肯定较长,不过估计12小时有可能做得完的,可以试一试,不行的话随时中断也可以的,不会造成数据回滚。
分钟。数据创建索引需要索引排序,建立分支索引复合B树,每分钟可以创建140多万条数据,建立好索引后逐批导入数据,数据越多需要的时间越长,1亿条数据创建索引大约需要70分钟。
万数据加索引要1分钟。索引跟类型关系很大,一般定长字段比变长字段简单,IO消耗小,时间节省,复合索引变长越多就越复杂,其次就是一表多索引,这种情况会衍生各种存储索引结构,就更费时间了。
引创建速度取决于两个方面:主机性能。减少数据表中数据量。针对第一种情况:可适当增加主机内存,更换CPU等。
万数据写入数据库需要16800秒oracle。根据查询相关资料信息,插入10万数据要42秒,则插入4000万数据写入数据库需要16800秒,等于280分钟,等于4个小时又40分钟。
可以Bitmap 不过如果Insert,update,delete太多很死锁。
Q2: 为什么ORACLE加上索引后JOIN操作变的更慢
1、Oracle 在创建主键(可以不加constraint SYS_AAA),会为库表自动创建索引,索引的列为主键列。
2、oracle要自动维护索引,当有大量的update、insert等操作时,oracle同样要对索引进行更新维护,这样就增加了oracle额外的开销,从而影响速度。所以,并不是所有的表都适合添加索引,具体情况要看你自身的业务需要。
3、假设表的数据非常多,hash_area_size设置的内存不够,则驱动表会被分为PARTITION分别读入,效率就会差些。
4、这个是用来生成笛卡尔积的,输出的行数是你两个表查询行数的的乘积,本来就慢,没有必要就采用别的连接查询,主要看需求,要是必须用这个的话,只能从查询条件入手,建索引之类的了。
Q3: Oracle新手入门:如何提高索引创建速度?
因为只要采用了这个选项,则数据库就会使用多个服务进程来并行的创建索引,以提高索引创建的速度。为此,在同等条件下,多服务并行创建进索引并单服务创建索引速度要快的多。
设置cursor_sharing=FORCE 或SIMILAR ;将常用的小表、索引钉在数据缓存KEEP池中 ,设置optimizer_max_permutations ,调整排序参数 。
以上可以通过awr看oracle的建议。再一点exists 后面的select tfinareacode 可以改成select 1,可以提高一点效率。
Q4: oracle一千万的数据建索引要多久
1、分钟。数据创建索引需要索引排序,建立分支索引复合B树,每分钟可以创建140多万条数据,建立好索引后逐批导入数据,数据越多需要的时间越长,1亿条数据创建索引大约需要70分钟。
2、分钟左右。根据相关资料显示,oracle数据库表3000万数据用普通方式创建索引大概需要35分钟左右。
3、小时。插入10万数据要42秒 插入1千万,岂不是要42000000秒,共11700小时。如果是很简单的表,现在流行的通用级别的服务是很快的,是可以在分钟级别完成的。
4、万数据加索引要1分钟。索引跟类型关系很大,一般定长字段比变长字段简单,IO消耗小,时间节省,复合索引变长越多就越复杂,其次就是一表多索引,这种情况会衍生各种存储索引结构,就更费时间了。
5、是否按时间分区,要看你的查询条件了,如果查询的都是有明确的日期,那当然可以分区,这样在查询过程中oracle只会在符合条件的分区中查询数据相当于减少了查询数量。
Q5: 如何加快Oracle建立索引的速度
主机性能。减少数据表中数据量。针对第一种情况:可适当增加主机内存,更换CPU等。针对第二种情况:将原表中数据转移到其他备份表中。给原表创建索引。将备份表中数据重新导回。
为此,在同等条件下,多服务并行创建进索引并单服务创建索引速度要快的多。所以如果服务器中有多个CPU,而且需要创建的索引比较多或者基础表中记录比较多的话,则采用这个选项能够大幅度的提高索引的创建效率。
创建分区表,使查询时的大表尽量分割成小表。Oracle提供范围分区、列表分区、Hash分区以及复合分区,具体选择哪种分区最优,需要根据你的业务数据来确定。创建索引,创建合适的索引可以大大提高查询速度。
例如: 同步索引myindex:Exec ctx_ddl.sync_index (myindex); 实施建议:建议通过oracle的job对索引进行同步 索引的优化 经常的索引同步将会导致你的CONTEXT索引产生碎片。索引碎片严重的影响了查询的反应速度。
oracle建立索引很慢的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle 建立索引 不起作用、oracle建立索引很慢的信息别忘了在本站进行查找喔。





