网站首页 > 知识剖析 正文
MySQL中创建索引的原则,有以下几点:
1、表的主键、外键必须有索引;
2、经常与其他表进行连接的表,在连接字段上应该建立索引;
3、选择唯一性索引;
唯一性索引unique index和一般索引normal index最大的差异就是在索引列上增加了一层唯一约束。
4、对于查询频率高的字段创建索引;
5、对排序、分组、联合查询频率高的字段创建索引;
6、尽量使用前缀来索引;
前缀索引是MySQL中的一个概念,在SQL Server和Oracle中没提出这个概念。前缀索引就是对文本的前几个字符(具体是几个字符在建立索引时指定)建立索引,这样建立起来的索引更小,所以查询更快。前缀索引能有效减小索引文件的大小,提高索引的速度,但是前缀索引也有它的坏处:MySQL 不能在 ORDER BY 或 GROUP BY 中使用前缀索引,也不能把它们用作覆盖索引(Covering Index)。
7、索引应该建在选择性高的字段上,在选择性低的字段上不必要建立索引,如:性别字段;
8、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
9、索引列不能参与计算,保持列“干净”;
10、对于定义为 text、image 和 bit 的数据类型的列不要建立索引;
11、若在实际中,需要将多个列设置索引时,可以采用多列索引;
12、一个表的索引的数目不宜太多;
13、删除不再使用或者很少使用的索引,避免对执行计划造成负面影响;
MySQL什么时候不走索引?主要3种情况:
1、不满足走索引的条件,常见的情况有
1.1、不满足最左匹配原则(索引的底层是一颗B+树,最左优先,以最左边的为起点任何连续的索引都能匹配上,同时遇到范围查询(>、<、between、like)就会停止匹配。);
1.2、查询条件使用了函数;
1.3、or 操作有一个字段没有索引(必须所有的or条件都必须是独立索引才能用到索引);
1.4、使用 like条件以%开头;
2、走索引效率低于全表扫描,常见的情况有
2.1、查询条件对 null 做判断,而 null 的值很多;
2.2、一个字段区分度很小,比如:性别、状态;
3、需要回表的查询结果集过大,超过了配置的范围
- 上一篇: postgresql 建立索引
- 下一篇: ORACLE优化之SQL篇
猜你喜欢
- 2024-12-13 面试官:怎么优化sql?
- 2024-12-13 MySQL架构优化实战系列1:数据类型与索引调优全解析
- 2024-12-13 SQL Server创建索引
- 2024-12-13 浏览器里的本地数据库:IndexedDB
- 2024-12-13 「走进RDS」之RDS PostgreSQL索引推荐原理及最佳实践
- 2024-12-13 14. WPS表格使用JS宏查询报表明细之查询实现
- 2024-12-13 大数据从业者必知必会的Hive SQL调优技巧
- 2024-12-13 数据库 CTREATE INDEX 用法
- 2024-12-13 什么是数据库的索引?
- 2024-12-13 这次是真拯救了我,MySQL索引优化,explain讲得非常清楚了
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)