最近再看mysql技术内部+innoDb存储引擎一书,书中第五章-索引与算法中讲到 查看表的索引信息中的一些参数含义,特作记录

show index from table_name ##  查看该表的索引信息

table 索引所在表名

Non_unique  :非唯一的索引,可以看到primary_key是0,因为必须是唯一的

Key_name :索引的名字

Seq_in_index :索引中该列的位置,针对联合索引比较直观

Column_name :索引列的名称

Collation :列以什么方式存储,可以是A或NULL,B+树索引总是A,即排序的;如果是使用的Heap存储引擎,并且建立了hash索引,这会显示为NULL

Cardinality :非常关键的值,标识索引中唯一值的数目的估计值,Cardinality/表的记录数应尽可能的接近1,如果非常小,那用户需要考虑是否还有必要创建这个索引。故在访问高选择性属性的字段并从表中取出很少一部分数据时,对于字段添加B+树索引是非常有必要的

Sub_part :是否是列的部分被索引

Packed:关键字是否被压缩

Null :是否索引中含有NULL值

Index_type:索引的类型,InnoDB存储引擎只支持B+树索引,所以都显示BTREE

Comment:注释

Cardinality 值非常重要,优化器会根据这个值来判断是否使用这个索引,但是这个值并不是实时更新的,即并非索引的更新都会更新该值,因为代价太大,只是一个大概值

在InnoDB存储引擎中,Cardinality统计信息的更新发生在两个操作中:insert和update。InnoDB存储引擎内部对更新Cardinality信息的策略为:

表中1/16的数据已发生了改变

stat_modified_counter>2000 000 000

第一种策略为自从上次统计Cardinality信息后,表中的1/16的数据已经发生过变化,这是需要更新Cardinality信息

第二种情况考虑的是,如果对表中某一行数据频繁地进行更新操作,这时表中的数据实际并没有增加,实际发生变化的还是这一行数据,则第一种更新策略就无法适用这种情况,故在InnoDB存储引擎内部有一个计数器start_modified_counter,

用来表示发生变化的 次数,当start_modified_counter>2 000 000 000 时,则同样更新Cardinality信息

mysql判断是否建立索引_判断mysql中列是否要添加索引的标准相关推荐

  1. 在mysql中如何为连接添加索引_在MySQL中如何为连接添加索引

    http://hackmysql.com/case4 译文: 我先通过一个简单的例子说明在MySQL中如何为连接添加索引,然后再看一个有挑战性的例子. 简单的3个表的连接 表结构很简单,3个表tblA ...

  2. mysql基础小测试三_数据库---MySQL(三)

    一.视图 视图是一个虚拟表,是sql的查询结果,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据,在使用视图时动态生成.视图的数据变化会影响到基表,基表的数据变化也会影响到视图[i ...

  3. 联合索引会创建几个索引_【1033期】分别谈谈联合索引生效和失效的条件

    这道题考查索引生效条件.失效条件.像这类问题才其实很有意义,建议各位以后面试其他伙伴的时候,多侧重这类问题的提问,比考察一般概念性的问题好多了. 能大概考察应聘者对写的程序是有注重做优化,提高代码质量 ...

  4. mysql建立学号与课程编号的索引_数据库mysql 四约束 三范式 六索引

    mysql 四约束 三范式 六索引 1.MySQL 约束 1.约束的作用 分类 表列的primary key主键,unique唯一键,not null非空等修饰符常常被称作约束(constraint) ...

  5. mysql 建复合索引_关于mysql建立索引 复合索引 索引类型

    这两天有个非常强烈的感觉就是自己在一些特别的情况下还是hold不住,脑子easy放空或者说一下子不知道怎么去分析问题了,比方,问"hash和btree索引的差别",这非常难吗.仅仅 ...

  6. mysql distinct多个字段_深入浅出Mysql索引的那些事儿

    一.索引的作用 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重. 在数据 ...

  7. mysql为什么使用b 树作为索引_为什么Mysql用B+树作为索引

    该篇文章已经投稿给公众号hollis 1.什么是索引 索引这个词,相信大多数人已经相当熟悉了.不过为了文章的完整性,这里再啰嗦一下.索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的 ...

  8. mysql pt工具 加索引_[转]MySQL中如何为连接添加索引

    SELECT * FROM tblA, tblB, tblC WHERE tblA.col1 = tblB.col1 AND tblA.col2 = tblC.col1; explain的结果如下: ...

  9. mysql隐式锁定辅助索引_当Mysql - InnoDB行锁遇到复合主键和多列索引-Go语言中文社区...

    背景 今天在配合其他项目组做系统压测,过程中出现了偶发的死锁问题.分析代码后发现有复合主键的update情况,更新复合主键表时只使用了一个字段更新,同时在事务内又有对该表的insert操作,结果出现了 ...

最新文章

  1. Ubuntu下配置和编译cpp-ethereum客户端
  2. 以下关于python自动化运维错误的是_Python在自动化运维时经常会用到的方法
  3. 年底了,如何准备 Java 初级和高级的技术面试?
  4. 基于Struts2的文件上传
  5. Mustache 中的html转义问题处理
  6. 关于Webapp的注意事项
  7. jQuery源码分析 整体框架部分及部分常用方法
  8. 文科可报考计算机专业会怎样,高考志愿填报文科考生能够报考计算机吗?哪些学校会有招生?...
  9. 【转】ASP.NET AJAX入门系列(9):使用ScriptManager控件
  10. 《Metasploit渗透测试手册》—第3章3.5节在Windows 2003 Server上进行渗透测试
  11. linux 安装talib
  12. 12306数据库遭泄露,请尽快修改密码
  13. c语言程序调试方法有哪些,c语言程序的调试方法有哪些
  14. 车企号脉,资本试药,出行服务带病也要上场
  15. 学会有礼貌的拒绝应聘者
  16. 数据挖掘与分析应用1:Excel表数据分析,sum,sumif,sumifs,vlookup,match,index,几个配合使用
  17. 启动此程序因为计算机丢失msvcr110,win7系统提示无法启动此程序计算机中丢失MSVCR110.dll的解决方法...
  18. ios-app杀死状态下响应推送
  19. Creator打android包时报Could not resolve all files for configuration ':jcore-react-native:lintClassPath'异
  20. Java历史、现状和各版本技术更迭总结

热门文章

  1. 用反向传导分子模型去计算基团的定位效应
  2. c语言 文件截断,c – 是否有一种正统的方法来避免编译器警告C4309 – “二进制文件输出的”常数值的截断“?...
  3. 如何知道react对象的值_基于react怎么获取兄弟元素的对象或它的值?
  4. 【数理知识】《积分变换与场论》王振老师-第3章-矢量与矢量空间
  5. 1.6 课程资源-深度学习-Stanford吴恩达教授
  6. linux Vi搜索和替换字符串
  7. 雅客EXCEL(7)-EXCEL居家常用必备函数(vlookup,IF,AND,OR)
  8. 【Android工具】更新几个平台视频流媒体播放器测试情况
  9. 光伏电池组 局部阴影时输出模型 P-U曲线 I-U曲线 simulink实现 MPPT-Model
  10. stm32 keil下不重启进行仿真寻找bug原因