数据库开发小知识普及一:
1.表设计方面:
(1)Oracle表记录在5000w以上的大表,建议使用分区表。分区表的重要特性:高效的分区消除,高效的数据清理,高效的分区转移。
(2)使用分区表时,在sql的编写上注意尽量多的使用分区键,才能起到分区消除的效果。
(3)分区表的索引分为全局索引和局部索引,使用局部索引注意使用场景,不然走索引反而效率低。
(4)注意当清理分区数据之后,小心全局索引失效。
(5)推荐大家一种表--全局临时表,它的特点:
a.高效删除记录,基于会话的全局临时表,session连接退出,临时表记录自动删除,无需手动操作。
b.不同会话之间独立。针对不同会话数据独立,不同的session访问全局临时表,看到的结果不同。
c.无论insert、update还是delete,操作临时表产生很少的redo log,执行效率高。
适用场景:运算过程中临时处理数据的中间结果集表。
2.SQL语句性能提升的方法
(1)代码中的SQL编写时,能使用绑定变量的地方,尽量使用绑定变量。这样可以减少硬解析,大大提升sql执行效率。
(2)增删改的sql,比如insert,update,delete等sql,尽量批量提交,避免一条一条的提交。也可以提升数据更新效率。
(3)实现相同结果的情况下,集合写法,又优于单条批量提交。比如一条sql能插入10万条,肯定优于10万个单条sql。
(4)并行设置,带你的sql乘上火箭速度。如果给sql语句设置parallel并行度(一般设置为4-8),速度可以大大提升,但并行最大的缺点是占用cpu资源,在高并发的数据库中,可能导致其他应用资源不足,需谨慎使用,三思而行。