oracle数据库表频繁插入和删除,会导致用不到索引吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据库表频繁插入和删除,会导致用不到索引吗?相关的知识,希望对你有一定的参考价值。

不会,因为在插入和删除的时候,就会自动去更新索引。追问

实际上是没用到,有没有可能因为创建新索引需要时间,没建好之前的查询操作就用不到索引了。

追答

你是用什么工具分析的没有走索引?
ORACLE不是每个查询都会走索引,因为他有一套自己的规则。
如果你一定要走索引,推荐使用 HINT 来处理。

追问

捞取执行慢的sql捞出来的。加hint可以解决,但是想知道原因。

参考技术A 频繁更新会导致表统计信息过于陈旧
执行计划认为不走索引反而由于使用索引
解决的办法是定期对此类表做索引分析或者重新分析表
已达到执行计划最优的情况

oracle数据库之数据插入修改和删除

参考原文https://www.cnblogs.com/fighter007/p/8287780.html

 

查询列表

select * from classinfo;   --用于查询班级表的sql 

select * from studentinfo;   --用于查询学生表的sql

 

向数据表中插入数据

insert into classinfo(classid,classname) values(01,\'测试一班\');
insert into classinfo(classid,classname) values(02,\'测试二班\');
insert into classinfo(classid,classname) values(03,\'测试三班\');
insert into classinfo(classid,classname) values(04,\'测试四班\');
commit;

--commit  是一次性提交到数据库保存,不commit就不会真正存储到数据库中。
--rollback 是回滚操作,代表的意思就是不commit就可以回滚到上一次操作


结果

 

 

单条插入:

insert into studentinfo(studentid,studentname,studentsex,studentage,studenttel,studentaddress,classid)
values (1, \'张山\', \'男\', 15, \'13789895566\', \'北京\',1);

 

多条数据插入:

insert into studentinfo values(2,\'李四\',\'男\',18,\'1325655563\',\'南昌\',2);

insert into studentinfo values(3,\'王五\',\'男\',\'25\',\'13855223322\',\'深圳\',3);

insert into studentinfo values(4,\'丽丽\',\'女\',\'23\',\'13256232236\',\'新疆\',4);

 

第二种的方式比第一种更加的方便,如果明确要往表中插入数据,可以省掉values前面的列名

 

 

修改张山的性别为女:
update  studentinfo set  studentsex=\'女\' where studentid=1;
select * from studentinfo;


修改某几列数据:
update studentinfo set studentname=\'李五\',studentsex=\'女\',studentage=15 where studentid=2;
commit;
select * from studentinfo;

对数据进行加运算,将张山的年龄增加10岁:
update studentinfo set studentage=studentage+10 where studentid=1;
commit;
乘运算:
update studentinfo set studentage=studentage*3 where studentid=3;
commit;

根据id删除数据:
delete from studentinfo where studentid=1;
commit;

删除表:
删除studentinfo表 即删除整个表中所有的数据
drop table studentinfo;
 
 


 

以上是关于oracle数据库表频繁插入和删除,会导致用不到索引吗?的主要内容,如果未能解决你的问题,请参考以下文章

mysql union all和union的区别

oracle数据库之数据插入修改和删除

oracle数据库之数据插入修改和删除

oracle删除表的时候报错

如何分离在 Oracle 中为特定表插入、更新和删除记录的过程

oracle 怎么在存储过程中创建一个临时表,在里面插入数据,再查找这个临时表的所有数据,最后drop这个表。