网站首页 > 技术文章 正文
索引是可以高效的获取数据的数据结构, 对查询有很大作用. 索引对于数据库, 就像偏旁部首, 或者26个英文字母对于字典一样, 能很快的提高查询速度.
但是索引也有它的缺点:
- 首先就是占用磁盘空间
- 其次是虽然提高了查询效率, 但是会降低表的更新效率, 因为进行增删改的时候都需要更新索引文件.
MySQL的索引分为以下几种:
- 单列索引, 单列索引包括普通索引, 唯一索引和主键索引. 普通索引纯粹是为了查询快, 允许重复和空值.
create index index_name on table (column(length));
alter table table_name add index index_name on column(length);
唯一索引, 唯一但允许为空.
create unique index index_name on table(column(length));
主键索引唯一, 不为空
- 组合索引: 组合索引必须遵循最左匹配原则, 一般建议使用组合索引代替单列索引. 如果建了一个(columnA, columnB, columnC)的组合索引, 根据最左匹配原则, A, B, C, AB, ABC, BC都是起作用的.
- 全文索引: 只有在MYISAM引擎上才能使用. 只能在CHAR, VARCHAR和TEXT类型上使用
create fulltext index index_name on table (column(length));
索引失效的几种情况:
mysql聚集索引和非聚集索引
- 聚集索引是指索引值的顺序与数据的存储顺序一致, 通常是主键
- 非聚集索引是指索引值的顺序与数据的存储顺序通常不一致, 如普通索引, 唯一索引, 联合索引等;
- 如果一个表中存在主键, 那么该主键就为聚集索引;
- 如果没有主键, 那么第一个非空索引为聚集索引;
- 如果没有合适的索引, 那么InnoDB内部会生成一个隐藏的主键作为聚集索引, 该聚集索引是6个字节的列, 自增;
MySQL相关文章推荐:
猜你喜欢
- 2024-10-28 MySQL查询为什么没走索引?这篇文章带你全面解析
- 2024-10-28 什么情况会导致 MySQL 索引失效?(mysql什么情况下会导致索引失效)
- 2024-10-28 用了索引一定就有用吗?如何排查?(使用索引)
- 2024-10-28 MySQL 索引优化分析:为啥你的SQL慢?为啥你建的索引常失效?
- 2024-10-28 MySQL基础(索引分析和使用)(mysql各种索引的使用场景)
- 2024-10-28 MySQL基础(其它SQL优化)(mysql数据库优化及sql调优)
- 2024-10-28 除了网络问题之外,即使对于数据量较小的表
- 2024-10-28 研究了 4.7 个小时终于了解到了索引使用了却没变快的原因
- 2024-10-28 MySQL索引失效带来的性能瓶颈:如何解决这个棘手问题?
- 2024-10-28 常见mysql索引失效条件(常见mysql索引失效条件是什么)
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)