一、索引的创建与销毁

基本创建语法

Create [unique][cluster] index index_name
On table_name ( column_name1 [asc/desc] , [ column_name2 ] [asc/desc] , … );

注:

Unique表明此索引的每一个索引值只对应唯一的数据记录。

Cluster表示要建立的索引是聚簇索引,即索引项的顺序与表中记录的物理顺序一致。

Asc表示升序,desc表示降序。

强制使用索引

Select column1,column2, …
From table_name
With (index(index_name))
Where condition

注:

1.创建并强制使用多字段索引时,各字段的排列顺序on table_name( column1,column2)决定了其优先级,排列越靠前,具有越高的优先级。

2.当创建唯一索引时,应确保被索引的列不允许NULL值。创建唯一性索引的前提是,创建索引的列中已有的记录本身没有重复的值。

3.一个表中只能创建一个聚簇索引。再插入新行或是更新聚簇索引一部分的列值时,DBMS将自动地重新排序,因此尽量不要建立聚簇索引。

索引的销毁

Drop index index_name

注:

·对小的数据表,使用索引并不能提高任何检索性能,因此不需对其创建索引。

·当用户要检索的字段的数据包含有很多数值或很多空值时,为该字段创建索引会大大提高检索效率。

·当用户查询表中的数据时,如果查询结果包含的数据(行)较少,一般少于数据总数的25%时,使用索引会显著提高查询效率。

·索引列在WHERE子句中应频繁使用。

·先装数据,后建索引。

·索引提高了数据检索的速度,但也降低了数据更新的速度。如果要对表中的数据进行大量更新时,最好先销毁索引,等数据更新完毕再创建索引,这样会提高效率。

·索引要占用数据库空间。在设计数据库时,要把需要的索引空间考虑在内。

·尽量要把表和它的索引存放在不同的磁盘上,这样会提高查询速度。

二、视图的基础知识

视图的优缺点

优点:

·简化操作。视图大大简化了用户对数据的操作。因为在定义视图时,视图本身就可以是一个复杂查询的结果集。这样,在每一次执行相同的查询时,不必重新写这些复杂的查询语句,只要一条简单的查询视图语句即可。

·定制数据。视图能够让不同的用户,以不同的方式看到不同或相同的数据集。因此,当有许多不同水平的用户共用同一数据库时,这显得极为重要。

·合并分隔数据。在有些情况下,由于表中数据量太大,故在表的设计时,常将表进行水平分割或垂直分割,但表的结构的变化却对应用程序产生不良的影响。如果使用视图就可以重新保持原有的结构关系,从而使外模式保持不变,原有的应用程序仍可以通过视图来重载数据。

·安全性。试图可以作为一种安全机制。通过视图,用户只能查看和修改他们所能看到的数据。其他数据库或表既不可见,也不可以访问。如果某一用户想要访问视图的结果集,必须授予其访问权限。试图所引用表的访问权限与视图权限的设置互不影响。

缺点:

·性能。由于视图是虚拟的表,在使用包括视图引用的SQL 语句时,除了执行所键入的SQL语句中的查询或更新之外,还要告诉DBMS执行定义视图的查询,这就影响了查询效率。

·更新限制。不是所有的视图都是可更新的。目前,SQL将可更新的视图限制为基于对单个表的,并且没有GROUP BY或者HAVING子句的查询。除此之外,为了使视图是可更新的,视图不能使用聚集函数、计算的列或SELECT DISTINCT 子句。

三、视图的创建与销毁

基本创建语法

Create view <view_name> [(column1,column2…)]
As
Select <column_name>
From <table_name>
[With check option]

视图的销毁

Drop view view_name

注:删除视图时也只是删除视图的定义,对实际表中的数据并没有任何影响。