前言

索引加快了检索的速度,但是却降低了数据列里插入、删除以及修改数值的速度。也就是说,索引降低了许多涉及写入的操作速度。之所以出现这种情况,是由于写入一条数据不仅仅是要写入到数据行,还需要所有的索引都作出相应的改变如更新或是重新编排。MySQL在为检索生成一个执行方案时候,要仔细对索引进行计算,创建过多的索引对查询优化程序就加上了更多的工作,而且当你有太多的索引的时候,MySQL还有可能无法选出最好的索引来使用。于是在选择索引的时候,需要采取一些策略。

策略1

在选择索引列的时候,尽量为用搜索、分类或者分组的数据列编制索引,不要为作为输出的数据列编制索引。换句话说,最合适有索引的数据列是那些在where字句中出现的数据列,在连接字句中给出的数据列、或是在order by或是group by子句中出现的数据列。

策略2

综合考虑数据列的维度势。数据列的维度,等于它所容纳的非重复值的个数。

策略3

尽量选择短小的值进行索引

短小的值可以让比较操作更快完成,加快索引查询速度。

短小的值可以让索引的体积更小,减少磁盘I/O活动

短小的键值意味着键缓存里的索引块可以容纳更多的键值,让MySQL可以在内存中容纳更多的键,这样较少了I/O活动的概率。

InnoDB存储引擎采用的聚族索引。所谓的聚族索引就是把数据行和主键索引集中保存在一起,其他的索引都是二级索引,它们保存着主键值和二级索引值。对于二级索引查找过程是先通过二级索引找到主键,然后通过主键找到对应的数据。选择短小的值进行索引,可以减少二级索引占据的空间。

策略4

为字符串值的前缀添加索引

如果打算给一个字符串列添加索引,尽可能的给出前缀长度。

策略5

不要建立过多的索引

mysql索引设计策略_MySQL索引设计一些策略相关推荐

  1. mysql数据库业务逻辑_Mysql业务设计(逻辑设计)

    逻辑设计 数据库设计三大范式 数据库设计第一大范式 数据库表中所有的字段都只具有单一属性 单一属性的列是由基本数据类型所构成 设计出来的表都是简单的二维表 数据库设计的第二大范式 要求表中只有一个业务 ...

  2. mysql b 树 锁_mysql索引B+树、MVCC、锁一文搞懂

    1.innodb索引 innodb是页存储,一页是16K. 一个表的行数据都放到页里,单页都是单链表递增排序. 每个页之间都是双向链表保存.该页标记成数据页. 根据id查询时,也不知道在哪个数据页上. ...

  3. mysql索引实现原理_Mysql索引原理

    1.二分查找法 二分法,也叫二分查找法,是一种高效的查找算法. 如下一个有序数列,如果我们需要从中找到1这个元素,这个过程需要查找几次? [1,2,3,4,5,6,7,8,9,10] 对于这个数列查找 ...

  4. mysql date建索引有用吗_Mysql索引分析:适合建索引?不适合建索引?【转】

    数据库建立索引常用的规则如下: 1.表的主键.外键必须有索引: 2.数据量超过300的表应该有索引: 3.经常与其他表进行连接的表,在连接字段上应该建立索引: 4.经常出现在Where子句中的字段,特 ...

  5. mysql索引的时间复杂度_MySql索引总结

    索引概念 B+树索引分为聚集索引和非聚集索引(辅助索引),但是两者的数据结构都和B+树一样,区别是存放的内容. 可以说数据库必须有索引,没有索引则检索过程变成了顺序查找,O(n)的时间复杂度几乎是不能 ...

  6. mysql索引有哪些_MySQL索引是个什么东西

    一.索引介绍 1.什么是索引1)索引就好比一本书的目录,它能让你更快的找到自己想要的内容. 2)让获取的数据更有目的性,从而提高数据库检索数据的性能. 2.索引类型介绍1)BTREE:B+树索引 ( ...

  7. mysql 索引类型案例_Mysql索引类型与基本用法实例分析

    本文实例讲述了Mysql索引类型与基本用法.分享给大家供大家参考,具体如下: 索引 MySQL目前主要有以下几种索引类型: 普通索引 唯一索引 主键索引 组合索引 全文索引 - 普通索引 是最基本的索 ...

  8. mysql索引详解_MySQL索引详解

    导读:大家都知道,一个MySQL数据库能够储存大量的数据,如果要查找那一个数据,就得费好大劲从一大堆的数据中找到,即费时间又费力气,这时,索引的出现就大大减轻了数据库管理员的工作.本文介绍了数据库索引 ...

  9. mysql 索引生命周期_MYSQL 索引(一)--- 简介

    简介 Mysql 官方定义 : 索引(Index) 是帮助 Mysql 高效获取数据的数据结构. 索引的目的在于提交查询效率,可以类比字典.简单理解为 "排好序的快读查找数据结构" ...

最新文章

  1. SAP 启用了HUM和QM的前提下,无法对采购订单的收货在质量放行前执行部分退货!
  2. php中final关键字
  3. 并不是所有的 Github 项目写在简历上都加分
  4. 【汇总篇】如何利用Excel高效地处理数据
  5. python 各层级目录下的import方法
  6. python 内存分析工具_[转] python运行时内存分析工具meliae
  7. C++中打印可变参数函数输出到控制台
  8. 视频内容理解相关方法
  9. Linux history命令
  10. linux uvc协议_UVCCamera-master
  11. Python字符串日常练习(基础向)
  12. 计算机网络应用最简单的,计算机网络的基础知识和简单应用.ppt
  13. 【读书分享】精益企业——高效能组织如何规模化创新?
  14. linux下磁盘查看和分区
  15. D0、T0、S0到账模式的区别
  16. Docker 核心知识点 可视化仪表盘
  17. ESP32C3学习记录1——搭建开发环境
  18. 费诺编码C程序及演示结果
  19. VC6下使用dbghelp及注意事项
  20. 奇奇怪怪技术贴之软件账户注销

热门文章

  1. 深度学习时间序列预测:卷积神经网络(CNN)算法构建单变量时间序列预测模型预测空气质量(PM2.5)+代码实战
  2. 百度PaddleOCR及云平台OCR API详解及示例
  3. R可视化绘制卡方分布图(Chi-Square Distribution)
  4. java连接Hbase数据库
  5. R语言绘制相关性热图
  6. gatb_core_components
  7. 程序编译是出现field has incomplete type问题的解决
  8. 基于matlab的对流层散射信道特性仿真,对流层散射信道建模和FPGA实现
  9. openGL 入门4 --- Following the data
  10. 语义分割DeepLab v2--DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolut