简述:数据库索引是加速数据检索,提高查询效率的一种数据结构
语法规则
创建索引
sql
--通用语法规则
--[内容] 可选参数
--UNIQUE: 可选关键字,用于创建唯一索引,确保索引列的值是唯一的
CREATE [UNIQUE] INDEX 索引名
ON 表名(字段名,...)
[ASC | DESC];
--ASC/DESC: 可选参数,指定索引是升序还是降序。默认是升序。
创建非唯一索引
sql
CREATE INDEX idx_employee_name ON employees(name);
创建唯一索引
sql
CREATE UNIQUE INDEX idx_employee_email ON employees(email);
创建符合索引(多字段(列))
sql
CREATE INDEX idx_employee_name_age ON employees(name, age);
删除索引
方法一:
sql
DROP INDEX 索引名 ON 表名;
方法二:使用表名前缀
sql
ALTER TABLE 表名 DROP INDEX 索引名;
查看索引
sql
SHOW INDEX FROM 表名;
常见的索引原则
-
- 选择唯一性索引,唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。
-
- 为经常需要排序、分组和联合操作的字段建立索引。
-
- 为常用作为查询条件的字段建立索引。
-
- 限制索引的数目: 索引并非是越多越好,创建索引也需要耗费资源,一是增加了数据库的存储空间,二是在插入和删除时要花费较多的时间维护索引尽量使用数据量少的索引
-
- 如果索引的值很长,那么查询的速度会受到影响。尽量使用前缀来索引
-
- 如果索引字段的值很长,最好使用值的前缀来索引。
-
- 删除不再使用或者很少使用的索引
-
- 最左前缀匹配原则,非常重要的原则。
-
- 尽量选择区分度高的列作为索引区分度的公式是表示字段不重复的比例
-
- 索引列不能参与计算,保持列"干净":带函数的查询不参与索引。
-
- 尽量的扩展索引,不要新建索引