一、为什么数据库一定要有主键
前提:主键应该为一个对业务无意义、一个有序递增的int或number型字段
1、 可以利用主键字段在数据底层存储上能有序的存储,能有效防止底层存储在DML时底层数据的可能存在迁移情况(行迁移、行连接等),影响底层数据存储上空间和性能的严重损耗
2、利用主键能够快速定位和update、delete快速更新或删除
3、能够提高OGG的快速同步和数据一致性保障
二、什么样的字段一定要创建索引
1、表与表之间经常join的字段
2、经常在where条件中列
3、复合索引创建指引:当where条件中出现多个条件列的时候,应该按照重复值越低且符合大部分业务场景查询的列作为前导列,减少数据的回表,直接能从索引中返回要的数据
比如:
where idcard_no ='111111111' and update_time=trunc(sysdate) idcard_no为个人身份证,该字段几乎为唯一,重复值很低,可以作为复合索引的前导列 update_time为更新时间,该字段会存储非常多的重复值,可以和idcard_no结合创建成复合索引
三、什么样的字段一定不能建立成索引
1、基数很低的列(比如性别,type等重复值很高的列)
2、更新频繁但检索不频繁的列
3、BLOB/TEXT等长内容列
4、很少用于检索的列