- 单字段索引
基于单个字段创建的
语法
--为表中的column_name创建字段
CREATE INDEX index_name
ON table_name(column_name)
- 唯一索引
唯一索引用于改善性能和保证数据完整性,唯一所索引不允许表里具有重复值
CREATE UNIQUE INDEX index_name
ON table_name(column_name)
注
唯一索引只能用于在表里没有重复值的字段,换句话说,如果现有表已经包含被索引关键字的记录,就不能再对它创建唯一索引。此外,允许NULL值的字段上也不能创建唯一索引
- 组合索引
基于一个表里两个或者多个字段的索引
/*
总是会在查询指定的字段应该方在首位
最具有限制的应该排在前面
*/
CREATE INDEX index_nmae
ON table_name(column1,column2)
- 引号索引
数据库服务程序在穿件对象时自动创建的,比如对于主键约束和唯一性约束自动创建索引
- 索引的使用
- 何时应当避免索引
a、索引不应该用于小规模的表
b、字段用于WHERE 子句作为过滤器会返回表里的大部分记录式,该字段就不适合设置索引
c、经常会被批量更新的表可以具有索引,但批量操作的性能会由于索引而降低,对于经常会被加载或批量操作的表来说,可以在执行批量操作之前去除索引,在完成操作之后再重新穿件索引。这是因为当表里插入数据时,索引会被更新,从而增加了额外的开销
d、不应该对包含大量NULL值的字段设置索引,索引对不同记录中包含不同数据的字段特别有效。字段中过多的NULL值会严重影响索引的运行效率
e、经常被操作的字段不应该设置索引,因为对索引的维护会变的很繁重
注
1、表和所以都应该进行事先的规划,不要认为使用索引就能解决所有的性能问题,索引可能根本不会改善性能(甚至可能降低性能)而知识占据磁盘空间
2、对于特别长的关键字穿件索引是要十分谨慎,因为大量 I/O开销会不可避免的减低数据库性能
- 修改索引
- 删除索引
DROP INDEX index_name
--在MySQL的语法结构稍有不同,需要指定创建索引的表格
DROP INDEX index_name
ON table_name