php面试专题---Mysql索引类型、介绍及优点

一、总结

一句话总结:

精品视频讲解里面的资料来源也是通过各种资料,比如博客、书等,只不过是基于讲解者的知识体系有整理的过程

1、B-Tree索引三大优点?

1、索引大大减少服务器扫描的数据量
2、索引帮助服务器避免排序和临时表
3、索引可以减少随机I/O变为顺序I/O

2、索引是否为最好的解决方案?

1、非常小的表,大部分情况全表扫描更高效
2、中到大型表,索引非常有效
3、特大表【TB级别】,可使用分区技术,块级元数据技术替换索引

二、Mysql索引类型、介绍及优点(转)

转自:Mysql索引类型、介绍及优点 - 简书
https://www.jianshu.com/p/e9844e5d7e68

写在前面:
网上针对索引分类,各种定义混乱,现在针对索引分类做以下整理。不足的地方,欢迎大家指正。


在MySql中,索引是在存储引擎层而不是服务器层实现的。

一、索引类型分类:

1. B-Tree索引

相关定义及原理

B-Tree树索引通常意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离都是相同

B-Tree树索引能够加快访问速度,因存储引擎不必进行全表扫描获取数据,而是从索引的根节点开始搜索。根节点的槽中存放了指向子节点的指针,存储引擎根据这些指针向下层查找。 通过比较节点页的值和要查找的值可以找到合适的指针进入下层子节点,这些指针实际上定义了子节点页中值得上限和下限。最终存储引擎要么找到对应的值,要么该记录不存在。

树的深度跟表的大小直接相关。

可使用B-tree索引的类型

适用类型:全键值、键值范围、键前缀【只适用最左前缀,这是Mysql相关特性,甚至和版本有关】

因为索引树中节点是有序的,故可按键值查找、ORDER BY顺序查找。

B-Tree索引限制

  1. 没有按照索引的最左前缀查找
  2. 不能跳过索引的列
  3. 某个列范围查找,则右边所有列都无法使用索引查找。如下方案例:
 WHERE name='zhangsan' AND city LIKE 'shen%' AND `date` ='2019-12-07'

2. 哈希索引

哈希索引基于哈希表实现,只有精确匹配索引所有列的查询才有效。
每一行,存储引擎都会对所有列计算一个哈希码,哈希码是较小的值,并且不同键值的行计算出来的哈希码也不一样。
在MySql中,只有Memory引擎显示支持哈希索引。也是Memory的默认索引类型,同时也支持B-Tree索引。
Memory引擎支持非唯一索引。

哈希索引限制
  • 哈希索引只包含值和行指针,而不存储字段值,故不能使用索引中的值来避免读取行。
  • 哈希索引无法用于排序,因哈希索引不是按照索引顺序存储。
  • 哈希索引不支持部分索引匹配查找,因哈希索引始终是使用索引列的全部内容来计算哈希值。

3. 全文索引

通过关键字匹配来进行查询过滤,基于相似度来查询。全文索引基本原理列斯互联网搜索引擎。

待进一步完善...

4. 空间索引

MyISAM表支持空间索引,可用于地理数据存储。

二、索引优点

1. B-Tree索引三大优点:

索引大大减少服务器扫描的数据量
索引帮助服务器避免排序和临时表
索引可以减少随机I/O变为顺序I/O

2. 索引的“三星系统”

索引将相关记录放到一起则获得一星
索引中数据顺序和查找排序一直则获得二星
索引中列包含查询中需要的全部列则三星

3. 索引是否为最好的解决方案

非常小的表,大部分情况全表扫描更高效
中到大型表,索引非常有效
特大表【TB级别】,可使用分区技术,块级元数据技术替换索引

文末索引点缀

全值匹配我最爱,最左前缀要遵守;
带头大哥不能死,中间兄弟不能断;
索引列上少计算,范围之后全失效;
LIKE百分写最右,覆盖索引不写星;
不等空值还有or,索引失效要少用。

 

php面试专题---Mysql索引类型、介绍及优点的更多相关文章

  1. php面试专题---Mysql索引原理及SQL优化

    php面试专题---Mysql索引原理及SQL优化 一.总结 一句话总结: 注意:只写精品 1.为表设置索引要付出代价 是什么? 存储空间:一是增加了数据库的存储空间 修改插入变动索引时间:二是在插入 ...

  2. php面试专题---MySQL常用SQL语句优化

    php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行 ...

  3. php面试专题---mysql数据库分库分表

    php面试专题---mysql数据库分库分表 一.总结 一句话总结: 通过数据切分技术将一个大的MySQLServer切分成多个小的MySQLServer,既攻克了写入性能瓶颈问题,同一时候也再一次提 ...

  4. php面试专题---MySQL分区

    php面试专题---MySQL分区 一.总结 一句话总结: mysql的分区操作还比较简单,好处是也不用自己动手建表进行分区,和水平分表有点像 1.mysql分区简介? 一个表或索引-->N个物 ...

  5. php面试专题---MYSQL查询语句优化

    php面试专题---MYSQL查询语句优化 一.总结 一句话总结: mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存) ...

  6. MySQL索引类型总结和使用技巧以及注意事项

    索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable ...

  7. mysql进阶(二十六)MySQL 索引类型(初学者必看)

    mysql进阶(二十六)MySQL 索引类型(初学者必看)   索引是快速搜索的关键.MySQL 索引的建立对于 MySQL 的高效运行是很重要的.下面介绍几种常见的 MySQL 索引类型.   在数 ...

  8. mysql索引类型(按存储结构划分)

    关于mysql索引类型,网上有很多相关的介绍,给人的感觉很乱.鄙人在翻阅相关书籍后,特意梳理了一下.哪里有不对的地方,欢迎指正! 1. B-Tree索引 它使用B-Tree数据结构来存储数据,实际上很 ...

  9. mysql索引类型 normal, unique, full text

    问题1:mysql索引类型normal,unique,full text的区别是什么? normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用 ...

随机推荐

  1. 神器 工具 推荐 SRDebugger

    unity asset store 关联下载 ,添加这个书签  javascript:var url = window.location.href;var id = url.substr(url.la ...

  2. C++边双缩点,Redundant Paths 分离的路径

    一道比较简单的 关于边双的题,个人感觉难度不大. 求出整个图的边双,根据边双的定义我们可以延伸出 边双的任两个点都有至少两种路径来互相抵达(因为其不存在割边) .不妨将每个边双缩成一个点,样例中的图便 ...

  3. 介绍一款代理端口管理工具--Proxfier

    官网下载地址: https://www.proxifier.com/download/ProxifierSetup.exe 用户名随意填注册码下边 5EZ8G-C3WL5-B56YG-SCXM9-6Q ...

  4. Java基础/阿里巴巴Java开发手册

    阿里巴巴Java开发手册 序号 文档名及下载地址 1 阿里巴巴Java开发手册v1.2.0 2 <阿里巴巴Java开发手册>(终极版) 为什么阿里巴巴禁止工程师直接使用日志系统(Log4j ...

  5. JAVA总结--dubbo与zookeeper

    读累了就看看实操https://www.cnblogs.com/huasky/p/10214642.html 一.SOA 概念:SOA:Service-Oriented Architecture,面向 ...

  6. 基本数据类型间的运算(不包括boolean)

    一 基本数据类型的间的运算  (不包括boolean) 1.自动类型提升 : 小容量的变量和大容量的变量做运算结果用大容量的变量的类型来接收. byte , short , char -> in ...

  7. Water Tree CodeForces 343D 树链剖分+线段树

    Water Tree CodeForces 343D 树链剖分+线段树 题意 给定一棵n个n-1条边的树,起初所有节点权值为0. 然后m个操作, 1 x:把x为根的子树的点的权值修改为1: 2 x:把 ...

  8. 洛谷 - P4008 - 文本编辑器 - 无旋Treap

    https://www.luogu.org/problem/P4008 无旋Treap也可以维护序列. 千万要注意要先判断p节点存在才进行Show操作,不然输出一个'\0'(或者RecBin里面的东西 ...

  9. 搜索---DFS

    DFS   广度优先一层一层遍历,每一层得到的所有新节点,要用队列存储起来以备下一层遍历的时候再遍历.   而深度优先遍历搜索在得到一个新节点时立即对新节点进行遍历:从节点0出发开始遍历,得到新节点6 ...

  10. Elasticsearch7.X 入门学习第四课笔记---- Search API之(Request Body Search 和DSL简介)

    原文:Elasticsearch7.X 入门学习第四课笔记---- Search API之(Request Body Search 和DSL简介) 版权声明:本文为博主原创文章,遵循CC 4.0 BY ...