数据库表添加索引
给字段添加索引,适用于查询频繁,重复不多的字段。主键和唯一约束在MySQL中会自动生成索引。
需要根据具体的查询模式和数据特点来设计,过多的索引会影响写操作性能,而索引确实会导致查询缓慢。合理的索引设计师数据库性能优化的关键。
索引
索引是一种数据结构,简单的案例就是类似书籍的目录,帮助mysql快速定位到所需要的数据行,而不需要扫描到整个表。索引存储了表中一列或者多列的值,并指向对应的数据行位置。
索引的类型
按照数据结构:
- B+树索引
- 哈希索引
- 全文索引
按应用维度分: - 主键索引:每个表只有一个,自动创建
- 唯一索引
- 普通索引
- 复合索引:包含多个列的索引,遵循最左匹配原则
工作原理
使用B+树结构存储索引,是一种平衡的多路搜索树,所有叶子结点在同一层,并包含实指向实际数据的指针。执行查询时,MySQL从根节点开始,逐层向下查找,直到找到目标数据。
添加索引
- 新建表中添加索引
- 已有表中添加索引
- 以修改表的方式添加索引
例如新建表添加索引:
create table table_name (id int not null primary key,name varchr(20) null,password varch(20) null,index index_id(id)
使用sql创建索引:
-- 创建普通索引
create index idx_name on table_name(column_name);-- 创建唯一索引
create unique index idx_name on table_name(column_name);-- 创建复合索引
create index idx_composite on table_name(col1, col2, col3);
删除索引:
drop index index_name on table_name;
查看索引:
show index from table_name;
优缺点
优点:
- 提高查询速度,特别是where, order by, group by操作
- 加速表连接操作
- 减少服务器需要扫描的数据量
缺点:
- 占用额外的存储空间
- 降低insert, update, deltete操作的速度
- 维护成本增加
参考
mysql中添加索引的三种方法