数据库索引(以 mysql)
索引是对数据库表中的一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中特定的信息
索引是对数据库表中的一列或多个列的值进行排序的结构。
如 select * from name where id = 10000.
如果没有索引,必须遍历整个表,直到ID等于 10000的这一行被找到为止,有了索引后(必须在ID这一列上建立索引),在索引中查找,但索引是经过某种算法优化过的,查找次数
要少得多。因此,索引是用来定位的.
索引分为聚簇索引和非聚簇索引两种。聚簇索引是按照数据存放的物理位置为顺序的。而非聚簇索引就不一样了,聚簇索引能提前多行的检索的速度,而非聚簇索引对于单行检索
很快。
建立索引的目的是加快对表的记录的查找或排序
为表设置索引要付出代价,一是增加了数据库的存储空间,二是插入和修改数据时要花费较多的时间(因为索引也要随之变动)
创建索引可以大提高系统性能,
第一,通过创建唯一性索引,可以保证数据库表的每一行数据的唯一性。
第二,可以大大加快数据的检索速度,(主要原因)
第三,加快表和表之间的连接,特别是实现数据的参考完整性方面特别有意义。
第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
索引是建立在数据库表的某些列的上面的。一般来说,应该在这些列上创建索引:
经常需要搜索的列上,可以加快搜索速度。
在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构。
在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度,在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。
在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序的查询时间。
在经常使用 where 子句中的列上面创建索引,加快条件的判断速度。
索引的大分类:分为聚簇索引和非聚族索引。聚簇索引只有一个,该索引中的键值的逻辑顺序决定了表中相应行的物理顺序。非聚簇索引中的索引的逻辑顺序与磁盘上的物理存储顺
序不同。
聚簇索引:(一个表只能有一个)
create clustered index 索引名 on 表名 (列名);
非聚簇索引:
create unclustered index 索引名 on 表名 (列名)
具体分类及创建方法:
普通索引:
create index 索引名 on 表名 (列名);
唯一索引:值唯一,但可有空值(建议用主键代替或唯一约束)
create unique coustered index 索引名 on 表名(列名1[,列名2....]);
主键索引:特殊的唯一索引,不允许有空值班。一般建表时同时创建,一个表只能有一个主键
create table(id, name,age, primary key(id,name));
组合索引:
create index 索引名 on 表名 (列名1[,列名2....]);