Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-查询/SQL语句

全面掌握MS ACCESS SQL(14)

时 间:2018-01-05 16:04:29
作 者:Big Young   ID:252  城市:襄阳
摘 要:    使用带DROP CONSTRAINT子句的ALTER TABLE语句和DROP INDEX语句对索引进行删除。
正 文:

第四节 用SQL删除已有的索引

索引的优点很明显,那就是加快查询速度。但是索引也有不适宜的情况,原因是建立索引后,更新索引上的数据时会导致表中记录的物理顺序的变更,代价较大,且会占用一定的系统资源,因此对于经常更新的列不宜建立索引,对于应用中感觉不适当的索引,就有必要将其删除以优化数据的性能。因为索引逻辑和物理上独立于相关表中的数据,在任何时候删除索引都不会影响表(或其他索引)。如果删除了索引,所有SQL程序和应用会继续正常运行,但访问先前有索引的数据会变慢。

要从表中删除索引,可使用Drop INDEX语句或者在Alter TABLE语句中使用Drop CONSTRAINT子句。对于Microsoft Access而言,一个表中索引名唯一,但在不同的表中可以使用相同的索引名,因此必须指明要删除的索引的表名。

一、用Drop INDEX语句删除索引

Drop INDEX的语法非常简单,如下:

Drop INDEX index ON table;

这里index是索引的名称,table是表的名字,此语句的功能就是将指定表的指定索引删除掉。

我们上一节创建了一个名为人员的工具表,并在电话字段上创建了一个名为索引_电话的索引,现在我们要将其移除,使用SQL语句如下:

Drop INDEX 索引_电话 ON 人员;

Drop INDEX语句一次只能删除一个命名的索引,如果要删除多个索引就需要多次执行这个语句并分另指定要删除索引的名称。对于创建时用户没有指定名称而由系统自动随机命名的索,用此语句就不能完成了,因为我们不知道其名字,只能用VBA编程结合DAO对象来完成了,这已超出了本文讨论的范围,在此就不详述了。

下面我们再来看一个例子:

Drop INDEX 索引_姓名 ON 人员;

这条语句将删除人员表中的名称为索引_姓名的索引。

二、用Alter TABLE语句删除索引

Alter TABLE主要是用来修改表的结构及字段的属性,带Drop CONSTRAINT子句后可以对索引进行删除,语法也比较简单,如:

Alter TABLE tblName Drop CONSTRAINT idxName;

在这里tblName是表的名称,操作是在此表上进行的,idxName是将要被删除的索引的名字,执行此语句后指定的索引将不复存在。

Alter TABLE 人员 Drop CONSTRAINT 索引_复合;

这条语句将删除人员表中名为索引_复合的索引。

Drop INDEX语句一样带Drop CONSTRAINT子句的Alter TABLE语句一次也只能删除一个索引,如果指定一个索引名列表,执行时会提示后面的索引不存在的错误消息。



Access软件网官方交流QQ群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助