Oracle11g 学习笔记-10(索引)

1-为什么要用索引?
如果要在表中查询指定的记录,在没有索引的情况下,必须遍历整个表,而有了索引之后,只需要在索引中找到符合查询条件的索引字段值,就可以通过保存在索引中的ROWID快速找到表中对应的记录。

2-什么场景下使用索引?
如果一个数据表中存有海量的数据记录,当对表执行指定条件的查询时,常规的查询方法会将所有的记录都读取出来,然后再把读取的每一条记录与查询条件进行比对,最后返回满足条件的记录。这样进行操作的时间开销和I/O开销都十分巨大的。对于这种情况,就可以考虑通过建立索引来减小系统开销。

3-列举四类索引?
B树索引、位图索引、反向键索引、基于函数的索引

4-写出其中两类索引的创建SQL…
B树索引:

SQL> create index emp_deptno_index on emp(deptno)
  2  pctfree 25
  3  tablespace users;

索引已创建。

位图索引:列的基数低时建立B树索引反而效率低

SQL> create bitmap index emp_salary_bmp
  2  on employees(salary)
  3  tablespace users;

函数索引:

SQL> create index emp_job_fun
  2  on emp(lower(job));

索引已创建。

5-为什么要重建索引?SQL语句是什么?
为表建立索引后,随着对表不断进行更新、插入和删除操作,索引中会产生越来越多的存储碎片,这对索引的工作效率会产生负面影响。这是可以采取两种方式来清除碎片——重建索引或合并索引。

SQL> alter index emp_deptno_index rebuild;

索引已更改。

6-更改索引的表空间可以么?如果可以 请写出SQL…

SQL> alter index emp_deptno_index rebuild
  2  tablespace example;

索引已更改。

7-删除索引的原因是什么?请写出删除索引SQL…
(1)如果移动了表中的数据,导致索引中包含过多的存储碎片,此时需要删除并重建索引。
(2)通过一段时间的监视,发现很少有查询会使用到该索引。
该索引不再需要时应该删除该索引,以释放其所占用的空间。

SQL> drop index emp_deptno_index;

索引已删除。

8- 如何查询索引信息?

SQL> conn system/Jacjqwl123
已连接。
SQL> select index_name,index_type
  2  from dba_indexes
  3  where owner=
  4  'HR';

INDEX_NAME                     INDEX_TYPE
------------------------------ ---------------------------
REG_ID_PK                      NORMAL
COUNTRY_C_ID_PK                IOT - TOP
LOC_ID_PK                      NORMAL
LOC_CITY_IX                    NORMAL
LOC_STATE_PROVINCE_IX          NORMAL
LOC_COUNTRY_IX                 NORMAL
DEPT_ID_PK                     NORMAL
DEPT_LOCATION_IX               NORMAL
JOB_ID_PK                      NORMAL
EMP_EMAIL_UK                   NORMAL
EMP_EMP_ID_PK                  NORMAL

INDEX_NAME                     INDEX_TYPE
------------------------------ ---------------------------
EMP_DEPARTMENT_IX              NORMAL
EMP_JOB_IX                     NORMAL
EMP_MANAGER_IX                 NORMAL
EMP_NAME_IX                    NORMAL
JHIST_EMP_ID_ST_DATE_PK        NORMAL
JHIST_JOB_IX                   NORMAL
JHIST_EMPLOYEE_IX              NORMAL
JHIST_DEPARTMENT_IX            NORMAL

已选择19行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值