索引的原理及创建索引的意义
索引是对表的一列或多列进行排序的结构。因为绝大多数的搜索方法在搜索排序结构时效率都会大大提高,所以如果表中某一列经常被作为关键字搜索,则建议对此列创建索引。
索引提供指针以指向存储在表中指定列的数据值,根据指定的排序次序排列这些指针。数据库使用索引的方式与使用书的目录很相似:通过搜索索引找到特定的值,然后跟随指针到达包含该值的行。
需要创建索引以及不适合创建索引的场合
适合创建索引的场合为:
1)为经常出现在WHERE子句中的列创建索引。
2)为经常出现在ORDER BY、DISTINCT后面的字段建立索引。如果建立的是复合索引,索引的字段顺序要和这些关键字后面的字段顺序一致。
3)为经常作为表的连接条件的列上创建索引
不适合创建索引的场合为:
1)不要在经常做DML操作的表上建立索引。
2)不要在小表上建立索引。
3)限制表上的索引数目,索引并不是越多越好。
主键选取的原则
主键的选取原则如下:
1)主键应是对系统无意义的数据。
2)永远也不要更新主键,让主键除了唯一标识一行之外,再无其他的用途。
3)主键不应包含动态变化的数据,如时间戳。
4)主键应自动生成,不要人为干预,以免使它带有除了唯一标识一行以外的意义。
5)主键尽量建立在单列上。
外键约束的意义
外键约束维护数据的一致性。外键约束条件包括两个方面的数据约束:
1)从表上定义的外键的列值,必须从主表被参照的列值中选取,或者为NULL。
2)当主表参照列的值被从表参照时,主表的该行记录不允许被删除。