一、索引
索引是一个单独的、物理的数据库结构,是数据库的一个表中所包含的值的列表,其中注明了表的各个值所在的存储位置。索引是依赖于表建立的,提供了编排表中数据的方法。
一般的数据库,如SQL Server,Oracle等,按存储结构的不同将索引分为簇索引(ClusteredIndex)和非簇索引(Nonclustered Index)
- 簇索引:是对表的物理数据页中的数据按列进行排序,然后再重新存储到磁盘上,即簇索引与数据是混为一体的,它的叶节点中存储的是实际的数据。
~~表的数据行只能以一种排序方式存储再磁盘上,所以一个表只能有一个簇索引。~~ - 非簇索引:具有与表的数据完全分离的结构,使用非簇索引不必将物理数据页中的数据按列排序。非簇索引的叶节点中存储了关键字的值和行定位器。非簇索引将行定位器按关键字进行排序,这个顺序与表的行在数据页中的顺序是不匹配的。
行定位器的结构和存储内容取决于数据的存储方式。如果数据是以簇索引方式存储的,则行定位器中存储的是簇索引的索引键;如果数据不是以簇索引方式存储的,则行定位器中存储的是指向数据行的指针,这种方式又称堆存储方式。 - 基本语法:
CREATE INDEX index_name
ON table_name(column_name1,[column_name2],…); 创建索引
DROP INDEX table_name.index_name; 删除索引 - 注意:
对于小的数据表来说,索引并不能提高效率;
建表后,先装数据,再建索引;
索引要占用数据库空间;
索引列经常被查询,被使用(WHERE子句中、distinct、order by、group by);
若要对表的数据进行大量更新,最好先销毁索引,再创建;
提高了数据检索的效率,降低了数据更新的速度。
二、视图
视图是一张虚表,不是真实存在的基础表,通过视图看到的数据只是存在在基础表中的数据。它是从一个或多个表中导出的表,其结构和数据是建立在对表的查询基础上的。和表一样,视图也是包括几个被定义的数据列和多个数据行,但这些数据列和数据行来源于它所引用的表。
对视图的操作和对表的操作一样,基本表的数据发生变化,相应也会反映到视图中。
- 优缺点:
简化操作、定制数据、合并分隔数据、安全性(只能修改看到的数据,保证其他数据安全);
更新限制,不是所有的视图都是可更新的。有group by、having、聚集函数、计算等不可更新。 - 创建语法:
CREATE VIEW <view_name> [(column1,column2…)]
AS
SELECT <column_names>
FROM <table_name> - 销毁语法:DROP VIEW view_name
- 注意:
和表一样,视图必须有唯一的名字;
视图的创建个数不受限制;
视图可以嵌套,即可以创建视图的视图;
用户必须从数据库管理员那里得到创建权限才可以创建视图;
一些数据库管理系统(如SQL Server)禁止用户在查询语句中使用ORDER BY子句。
声明:菜鸟学习路上的总结,若有误请您指正,若侵权请您联系我,若转载请您附上链接。