创建高效Oracle数据库表和索引
数据库设计既初级,又很复杂。有些经验性的技巧需要长时间的应用,现在把这些套路总结给你。
番茄发烧了
一介匹夫 随心而去
展开
-
索引失效的情况有哪些?索引何时会失效?(全面总结)
虽然你这列上建了索引,查询条件也是索引列,但最终执行计划没有走它的索引。下面是引起这种问题的几个关键点。列与列对比某个表中,有两列(id和c_id)都建了单独索引,下面这种查询条件不会走索引select * from test where id=c_id;这种情况会被认为还不如走全表扫描。存在NULL值条件我们在设计数据库表时,应该尽力避免NULL值出现,如果非要不可避免的要出现NU...原创 2018-11-16 09:57:40 · 30983 阅读 · 8 评论 -
全面总结Oracle中的分区表(精)
何时使用分区表分区表是对表按照规则进行划分,这个是要根据业务场景来确定的。建议值1 大于2G的表2 分区键必须反应业务需求,CUDR尽量不要跨分区操作如果通过有效隔离,全表扫描就变成了分区扫描,降低IO,但如果已经使用索引,且结果集较小时,做分区不一定会提高效率,这点要注意。分区表设计思路分区的数据要尽量保持均匀,偏差控制在20%左右。分区键的选择不应经常被UPDATE,要避免NUL...原创 2018-11-15 10:51:41 · 570 阅读 · 0 评论 -
Oracle的索引分裂和索引维护(精)
索引不是建好了就行了?难道还需要维护?带着这个问题,开启本篇博客。我们知道索引的数据结构是B树,每次更新数据都会对索引进行更新,所以如果是一张订单表,看起来这张表会一直在增长,并且订单表会经受一定的高并发考验(比如各种大促活动,秒杀活动)。对于开发人员来说,好像只对表操作就可以了,不用管oracle是如何做的,但实际上,若想清清楚楚、明明白白了解你写的接口,只有业务逻辑可不行,必须深入去知道索引...原创 2018-11-14 20:02:54 · 5076 阅读 · 0 评论 -
教你创建Oracle复合索引(精)
什么是复合索引?复合索引顾名思义,区别于单列索引,是由两个或多个列一起构成的索引。其在B树上的数据结构是什么样?如下图,是一个包含两列的复合索引。如果你观察仔细,还会发现它的叶子节点是ASC递增排序的。现根据第一个值排序,然后根据第二个值排序。查的时候也一样,先查第一个值,在查第二个值。你可以想象以下,三个列组成的复合索引数据结构该是什么样的。在实际开发中,我们经常会遇到创建表的情况。一...原创 2018-11-13 20:43:39 · 23422 阅读 · 0 评论 -
带你认识Oracle索引类型(全面总结)
Oracle索引和MySQL索引是一个概念,都是为了提高数据库查询效率,例如字典的目录,就是一种索引。不同的索引有不同的查询效率,比如字典的目录有以拼音首字母的,有偏旁部首的。当我们对所有索引类型有了了解之后,就可以针对性的写出高效的SQL语句、建立最合适的索引。那Oracle索引都有哪些类型呢?首先我们来看一下索引的数据结构:B树在介绍之前,首先建立一张表create table tes...原创 2018-11-13 19:48:07 · 17125 阅读 · 4 评论