一、索引的创建与销毁
基本创建语法
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
注:删除视图时也只是删除视图的定义,对实际表中的数据并没有任何影响。