Oracle 删除索引
删除索引是使用DROP INDEX语句完成的。
一般情况下,删除索引是由索引所有者完成的,如果以其他用户身份删除索引,则要求该用户必须具有DROP ANY INDEX系统权限或在相应表上的INDEX对象权限。
通常在如下情况下需要删除某个索引:
●该索引不再需要时,应该删除该索引,以释放其所占用的空间。
●如果移动了表中的数据,导致索引中包含过多的存储碎片,此时需要删除并重建索
引。
●通过一段时间的监视,发现很少有查询会使用到该索引。
索引被删除后,它所占用的所有盘区都将返回给包含它的表空间,并可以被表空间中其他对象使用。
索引的删除方式与索引创建采用的方式有关,如果使用CREATE INDEX语句显式地创建该索引,则可以用DROP INDEX语句删除该索引。
例如:
SQL> drop index emp_job_bmp;
索引已删除。
如果索引是定义约束时由Oracle自动建立,则必须禁用或删除该约束本身。
另外,在删除一个表时,Oracle也会删除所有与该表相关的索引。
关于索引最后需要注意一点,虽然一个表可以拥用任意数目的索引,但是表中的索引数目越多,维护索引所需的开销也就越大。
每当向表中插入、删除和更新一条记录时,Oracle 都必须对该表的所有索引进行更新。
因此,用户还需要在表的查询速度和更新速度之间找到一个合适的平衡点。
也就是说,应该根据表的实际情况,限制在表中创建的索引数量。