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数据库表频繁插入和删除,会导致用不到索引吗?的主要内容,如果未能解决你的问题,请参考以下文章