- 博客(11)
- 收藏
- 关注
原创 DML操作对索引的影响
由于表上索引的存在,对索引列的DML操作会受到影响,另一方面,列上的索引,由于DML操作也会影响索引的性能,通俗点说,这俩就是互相伤害,索引对DML操作的影响之前已经写过了,这里主要看下DML操作对索引的影响。delete操作delete是对整行数据的操作,只要有索引存在,都会被影响,delete删除数据的同时,索引叶块上对应的索引条目也会被打上删除标记,类似于逻辑删除,也就是说索引条目并
2016-12-19 13:53:50
1038
1
原创 索引选择性 集群因子 高度
选择性索引列上不同值的个数决定索引的选择性,索引选择性越高,索引值平均返回的行数就越少,使用索引的成本也就越低,主键或者唯一约束列选择性是最高的,在索引的叶块上,每个索引值只对应一个rowid,所以在主键列上使用索引查找数据效率很高,其他的,类似性别、名族等字段,选择性就很低,每个索引值可能对应很多rowid,在这些列上使用B树索引查找往往效率不高,比如性别,只有男,女,未知三个值,针对男或者
2016-12-16 09:25:29
787
原创 如何抑制索引的使用
如何抑制索引的使用,通俗点说就是如何给数据库挖坑,很多人主观上不会有挖坑的想法,但事实上正在做挖坑的事,就如抑制索引这个坑,创建索引就是为了在某些情况下提高SQL的执行效率的,最后因为一些坑,数据库该使用索引的时候却没有使用,造成系统性能低下,大家都得挨板子,下面扯一下曾经在索引上挖过的坑只说说普通的B树索引,其他的不具代表性使用不等于查找比如 SQL> select * from
2016-12-15 14:09:43
340
原创 组合索引
回忆记得刚工作的第一年,在一个市级政府部门驻场,一开发的哥们凑过来问我“兄弟,我那个页面查询数据有点慢,帮我整整呗”“查的啥?SQL给我瞧瞧”“常口的,就是根据身份证号码和姓名去查,有时候一个条件,有时候会有两个条件,咋整?”“额,我先看看,完事叫你”然后套路就来了,身份证和姓名分别建索引,这样任意一个条件都不慌,再加一个身份证和姓名的组合索引,这样两个一起查也不慌,索引建
2016-12-15 09:51:57
483
原创 不可视索引
上山容易,下山难,数据库索引也是这样,建时容易,删时难在项目中,索引基本上是这么产生的1,建主键送索引2,感觉sql慢,来个索引先3,查询条件变了,再来个索引4,查询条件变多了,来个组合索引5,查询条件要经过计算,来个函数索引6,性别之类的列来个位图索引7,见不得TABLE ACCESS FULL,想法设法加个索引8,不想回表如果是自己团队开发的应用,大家沟
2016-12-14 17:44:40
346
原创 索引负面影响测试
什么是索引索引是为了提供更好的查询性能,通过更少的IO查找同样的数据,索引的性能参照就是全表扫描,oracle按照执行计划在表中查找数据只有全表扫描和索引这两种方式,这两种方式没有好坏之分,只有适不适合索引负面影响1,索引要额外占据存储空间,这个额外空间并不小SQL> create table test as select * from dba_objects;Table cr
2016-12-14 16:07:16
587
原创 consistent gets
前段时间在测试高级压缩在IO方面性能的时候发现一个疑问,先看看当时的场景SQL> select table_name,num_rows,blocks from user_tab_statistics where table_name in('COMTAB','NOCOMTAB');TABLE_NAME NUM_ROWS BLOCKS-------------------
2016-12-13 14:10:22
740
原创 oracle11g高级压缩
oracle11g高级压缩oracle11g版本推出基于数据块级别高级压缩,以前版本的表级别压缩限制较多,更适合于数据直接加载的数据仓库,在OLTP环境下使用较少,既然名叫高级压缩,在功能上应该是有相当大的提升。高级压缩特点:1,建表时可以指定压缩参数,无需使用直接路径加载创建压缩表2,支持DML操作,老版本的压缩不会压缩后续DML操作的数据3,对现有的非压缩表可以设置压缩参数
2016-12-09 15:20:25
999
原创 查询表定义
查看表结构SQL> desc admin_czrk Name Null? Type ----------------- -------- ------------ XM VARCHAR2(20) SFZH VARCHAR2(18)查看表定义SQL> select DBMS_METADATA.GET_DDL('TABLE','ADMIN
2016-12-08 16:05:40
613
原创 查询用户所有的表
相关视图user_tables:当前用户创建的表all_tables:当前用户拥有权限的表dba_tables:数据库所有的表,拥有DBA权限或者SYS用户授权才能访问示例1,使用sys用户连接数据库,创建两个用户,分别授予DBA和普通权限[oracle@rac1 ~]$ sqlplus / as sysdbaSQL*Plus:
2016-12-08 13:16:25
740
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人