MySQL的索引(Index)详解
(1)普通索引(Key Indexes)
(2)唯一索引(Unique Indexes)
(3)主键索引(Primary Key Indexes)
(4)组合索引(Composite Index)
(5)前缀索引(Prefix Indexes)
(6
索引分类 (1)普通索引(Key Indexes) (2)唯一索引(Unique Indexes) (3)主键索引(Primary Key Indexes) (4)组合索引(Composite Index) (5)前缀索引(Prefix Indexes) (6)全文索引(Full-Text Indexes) (7)哈希索引(Hash Indexes) (8)空间索引(Spatial Indexes) 普通索引 普通索引是最基本的索引,没什么限制,根据创建时机不同,主要有两种方式: (1)在创建表时同时创建普通索引
其中方括号[]中内容表示可选项,竖线|表示两者选一。 (1)col_name:列名; (2)column_definition:列的具体定义,这里省略了; (3)INDEX|KEY:表示使用INDEX和KEY都能创建普通索引,因为在MySQL中,INDEX和KEY是一样的。 (4)[index_name]:索引的名字,是可选项,如果没有写,默认使用字段名作为索引的名称,一般以idx_字段名作为前缀来命名; (5)[index_type]:索引类型,表示索引的数据结构,有两类:BTREE和HASH,如果没有指明,默认是BTREE; (6)col_name [(length)] [ASC | DESC]:col_name是要添加索引的列,length表示要在类型为字符串的列的前length个字符构成的字符串上添加索引mysql表索引,[ASC|DESC]表示升序还是降序方式存储索引,默认是升序方式存储; 例:
该语句在创建my_table表时,同时在字段name上创建了一个名为idx_name的的普通索引。 (2)创建表之后创建索引 ——修改表结构的方式添加索引
例如:
该语句在my_table表的address字段上添加了名为idx_address的普通索引。 ——直接创建索引
例如:
可以使用如下DDL语句删除索引:
唯一索引 与普通索引类似,不同的是要求索引列的值必须唯一,但是多个NULL值。与普通索引创建方式相似: 创建表时创建:
创建表后直接创建:
修改表结构方式创建:
主键索引 主键索引不需要主动取创建,表创建主键后,自动在主键上创建,主键索引名称总是为PRIMARY,主键值的唯一和非空也就保证了主键索引的列值必须唯一且不能为空,所以主键索引可以看成是特殊的唯一索引。
该语句在创建表时创建了主键id,同时会在id上创建主键索引,如图: 组合索引 指在多个字段上创建的索引,在多个字段上创建的普通索引和唯一索引都是组合索引,所谓组合实际是字段的组合,对于多个字段上的唯一索引,要求组合字段必须唯一。可以如下创建组合索引
该语句在字段name和address两个字段上创建普通索引,结果如图: 如果要在两个字段上创建唯一索引,只要将INDEX替换成UNIQUE即可。 也可以在创建表后创建组合索引
前缀索引全文索引 哈希索引 哈希索引是基于哈希表实现的,只有精确匹配索引中所有列的查询,哈希所有才有效。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |