5
1、普通索引
普通索引(由关键字 KEY 或 INDEX 定义的索引)的唯一任务是加快对数据的访问速
度。因此,应该只为那些最经常出现在查询条件(WHEREcolumn=)或排序条件
(ORDERBYcolumn)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最
紧凑的数据列(如一个整数类型的数据列)来创建索引。普通索引就没有任何限制,不能唯
一标识一条记录,可以任意建立,数量不限。建立普通索引的主要目的是为了加快查询速度
和建立表之间的联系。
2、唯一索引
普通索引允许被索引的数据列包含重复的值。比如说,因为人有可能同名,所以同一个
姓名在同一个“员工个人资料”数据表里可能出现两次或更多次。它的唯一性是指索引项的唯
一而不是字段值的唯一。
如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就
应该用关键字 UNIQUE 把它定义为一个唯一索引。这么做的好处:一是简化了 MySQL 对
这个索引的管理工作,这个索引也因此而变得更有效率;二是 MySQL 会在有新记录插入数
据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果
是,MySQL 将拒绝插入那条新记录。也就是说,唯一索引可以保证数据记录的唯一性。事
实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免
数据出现重复。
3、主索引
必须为主键字段创建一个索引,这个索引就是所谓的“主索引”。主索引是候选索引的特
例,能唯一标识一条记录,只能由一个字段组成,一个表只能建立一个主索引。主索引与唯
一索引的唯一区别是:前者在定义时使用的关键字是 PRIMARY 而不是 UNIQUE。
主键是唯一标示的。
4、候选索引
也能唯一标识一条记录,但不一定只由一个字段组成,可以由两个或两个以上字段组成,
一个表可以建立多个候选索引。
5、复合索引
1.什么是复合索引?索引可以包含一个、两个或更多个列。两个或更多个列上的索引被
称作复合索引。
2.复合索引作用:利用索引中的附加列,可以缩小搜索的范围,但使用一个具有两列的
索引不同于使用两个单独的索引。
3.例子
CREATE INDEX name
ON employee (emp_lname, emp_fname)
复合索引的结构与电话簿类似,它首先按姓氏对雇员进行排序,然后按名字对所有姓氏
相同的雇员进行排序。如果您知道姓氏,电话簿将非常有用,如果您知道名字和姓氏,电话
簿则更为有用,但如果您只知道名字而不知道姓氏,电话簿将没有用处。所以复合索引,字
段的先后顺序是很重要的。列的顺序:在创建复合索引时,应该仔细考虑列的顺序。对索引
中的所有列执行搜索或仅对前几列执行搜索时,复合索引非常有用;仅对后面的任意列执行
搜索时,复合索引则没有用处。
就是为了提高查询检索性能,但一定程度上肯定会对其他操作的
性能有影响,如果没有影响,那全部加索引了,但是这显然不现实