表设计与SQL优化

 

1. 说说分区表的主要好处是什么,为什么会有这些好处。

分区功能能够将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。每个分区有自己的名称,还可以选择自己的存储特性。

从数据库管理员的角度来看,一个分区后的对象具有多个段,这些段既可进行集体管理,也可单独管理,这就使数据库管理员在管理分区后的对象时有相当大的灵活性。但是,从应用程序的角度来看,分区后的表与非分区表完全相同,使用 SQL DML 命令访问分区后的表时,无需任何修改。

对于超级大表来说,分区可以大大提高性能,不仅是操作方面的,还有维护管理方面

好处:访问路径减少,查询更快

        操作方便(truncate、drop、split、add、exchange)

           增加可用性,某个分区坏掉了,其他分区还可以使用

           IO均衡,可以把不同分区放到不同磁盘上

 

l 减少访问路径,查询更快:只查看对应分区的数据

clip_image002

l 操作方便(truncate、drop、split、add、exchange),直接操作分区数据,不需要操作全表数据!

truncate:alter table part_tab_trunc truncate partition p1 ;

drop:alter table part_tab_drop drop partition p1 ;

split:alter table part_tab_split SPLIT PARTITION P_MAX at (70000) into (PARTITION p7 ,PARTITION P_MAX);

Drop:--注意:必须要把默认分区去掉,再add分区,再增加默认分区,这里要担心丢数据!

alter table part_tab_add drop partition p_max;

alter table part_tab_add add PARTITION p6 values less than (60000);

alter table part_tab_add add PARTITION p_max values less than (maxvalue);

exchange:alter table part_tab_exch exchange partition p1 with table normal_tab including indexes update global indexes;

 

 

2. 说说全局临时表的主要好处是什么。

l 自动清理数据

提交后自动清理:

clip_image004

断开Session自动清理:

clip_image006

l 不同session独立

clip_image008

l 产生日志较少

clip_image010

3. 举例说明一下什么时候使用分区表性能比普通表还差。

如果查询的列不是分区的列,那么分区索引会导致性能更差,因为有多少个分区,就要查询多少个索引。设计的时候,要注意根据最常用的查询列进行分区,否则不但不会提高性能,反而会使性能下降!

clip_image012

clip_image014

而普通表的普通索引只要查一次就可以了

clip_image016

clip_image018

转载于:https://www.cnblogs.com/oraclesea/p/5265198.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值