网站首页 > 技术文章 正文
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、需要回表的查询结果集过大,超过了配置的范围
猜你喜欢
- 2024-11-14 MySQL 索引原理详解 mysql索引规则详解
- 2024-11-14 阿里面试官:什么是MySQL索引,为什么要有索引?
- 2024-11-14 为什么索引可以让查询变快?终于有人说清楚了
- 2024-11-14 SQL索引使用 sql索引使用场景
- 2024-11-14 「赵强老师」MongoDB中的索引(上)
- 2024-11-14 《从实践中学习oracle/SQL》读书笔记 7
- 2024-11-14 我以为自己对索引很了解,直到我遇到了阿里面试官
- 2024-11-14 sql添加索引 sql添加索引的作用
你 发表评论:
欢迎- 612℃几个Oracle空值处理函数 oracle处理null值的函数
- 603℃Oracle分析函数之Lag和Lead()使用
- 592℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 589℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 583℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 576℃【数据统计分析】详解Oracle分组函数之CUBE
- 566℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 558℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- PageHelper - 最方便的 MyBatis 分页插件
- 面试二:pagehelper是怎么实现分页的,
- MyBatis如何实现分页查询?(mybatis-plus分页查询)
- SpringBoot 各种分页查询方式详解(全网最全)
- 如何在Linux上运行exe文件,怎么用linux运行windows软件
- 快速了解hive(快速了解美国50个州)
- Python 中的 pyodbc 库(pydbclib)
- Linux搭建Weblogic集群(linux weblogic部署项目步骤)
- 「DM专栏」DMDSC共享集群之部署(一)——共享存储配置
- 故障分析 | MySQL 派生表优化(mysql pipe)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)