索引
什么是索引?
在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值得集合和相应的指向表中物理标识这些值得数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中页码快速找到所需的内容。
如何创建索引
在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX 或 ALTER TABLE来为表增加索引。
1.ALTER TABLE可以用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。
2.CREATE INDEX可对表增加普通索引或UNIQUE索引。
索引的几种类型?
1.唯一索引:唯一索引是不允许其中任何两行具有相同索引值的索引。当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。
2.主键索引:数据库表经常有一列或多列组合,其值唯一标识表中的每一行。该列称为表的主键。在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。
3.普通索引–regular:可以用以数据库表及单表,允许表中有多个重复关键字.
如何选择合适的列创建索引:
在where 从句,group by 从句,order by 从句,on 从句中出现的列; 索引字段越小越好;
离散度大的列放到联合索引的前面; 比如: select * from payment where staff_id = 2 and
customer_id = 236; 针对上面的查询是 index(sftaff_id, customer_id)
好?还是index(customer_id, staff_id)好? 因为customer_id的离散度更大,因此用后面的更合适!!
创建索引需要注意SQL语句的写法:
1、CREATE [UNIQUE|CLUSTERED] INDEX INDEX_NAME ON
TABLE_NAME(PROPERTY_NAME)
2、其中UNIQUE和CLUSTERED为可选项,分别是建立唯一索引和聚簇索引,具体解释为:UNIQUE:表示此索引的每一个索引值只对应唯一的数据。
3、CLUSTERED:表示要建立的索引时聚簇索引,即索引项的顺序与表中记录的物理顺序一致的索引组织。
索引查询是数据库中重要的记录查询方法,要不要进入索引以及在那些字段上建立索引都要和实际数据库系统的查询要求结合来考虑,下面给出实际中的一些通用的原则:
- 在经常用作过滤器的字段上建立索引;
- 在SQL语句中经常进行GROUP BY、ORDER BY的字段上建立索引;
- 在不同值较少的字段上不必要建立索引,如性别字段;
- 对于经常存取的列避免建立索引。