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行。