Btree索引和哈希索引(索引是一种数据结构,提高查询,排序,分组速度)

  • Btree索引的数据结构是平衡二叉树,时间复杂度为lgN
  • 哈希索引的数据结构是一个Hash函数,时间复杂度为O(1),数据输入Hash函数,输出一个数据行Address
    • 劣势:内存空间会有冗余不一定是紧密排列的;不利于范围查询;哈希地址冲突的问题(拉链算法)

常用联合索引的规则

  • 联合索引的创建并不是凭空的而是需要调研的
  • 假设index(a, b, c), 顺序很重要
  • where a = 1 and b = 2 and c = 4 (a,b,c都能用到索引)
  • where a = 3 and b = 4 (a,b能用到索引)
  • where b = 4 and a = 3 (a,b能用到索引)
  • where b = 5 and c = 4 (用不到索引)
  • where a = 1 and b like 'hello%' and c = 4 (a,b能用到索引c用不到)
  • where a = 1 and b like '%hello' (a能用到索引,b用不到索引)
  • group by b, c (b, c用到索引)
  • group by c, b (用不到索引)
  • 假设a,b,c三个字段对应三块木板,from a to b, 'hello%'走了木板的左半部分,所以用到了索引,‘%hello'走了木板的右半部分,所以不走索引,这个又称为索引的左前缀原则
  • where条件中如果有多个独立的索引,只能用上一个?

非聚簇索引和聚簇索引

  • 非聚簇索引对应myisam, 数据和索引二叉树是独立的文件,查数据先到索引二叉树,再到数据,索引指向行在磁盘上的位置,又称为回行
  • 聚簇索引对应innodb,数据和索引二叉树有关联,主键索引的叶子节点就直接放了数据本身,次级索引的叶子节点指向对主键的索引

聚簇索引导致的页分裂

  • 当insert的data主键毫无规律时,由于叶子节点存储着数据本身,会导致主键索引树节点变动较大,称为页分裂
  • 考虑一下两种情况,乱序插入myisam引擎,和乱序插入innodb引擎,当使用select * from t1时,innodb引擎对应的数据表查询结果会按顺序输出,虽然插入数据是无需的,但索引树本身是有序的;myisam引擎对应的数据表,因为没有使用where条件,所以怎么插入的就怎么输出,依然是乱序

非聚簇索引中的索引覆盖

  • 当要查询的列本身就是索引的一部分时,就不需要经过回行这个步骤了,又称之为索引覆盖;比如定义联合索引index(id, name), 执行select name from t1 where id = 1,则会using index

Mysql索引优化1的更多相关文章

  1. mysql索引优化

    mysql 索引优化 >mysql一次查询只能使用一个索引.如果要对多个字段使用索引,建立复合索引. >越小的数据类型通常更好:越小的数据类型通常在磁盘.内存和CPU缓存中都需要更少的空间 ...

  2. Mysql 索引优化分析

    MySQL索引优化分析 为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字 ...

  3. 知识点:Mysql 索引优化实战(3)

    知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 索引原理知识回顾 索引的性 ...

  4. MySQL索引优化步骤总结

    在项目使用mysql过程中,随着系统的运行,发现一些慢查询,在这里总结一下mysql索引优化步骤 1.开发过程优化 开发过程中对业务表中查询sql分析sql执行计划(尤其是业务流水表),主要是查看sq ...

  5. MySQL索引优化看这篇文章就够了!

    阅读本文大概需要 5 分钟. 来源:cnblogs.com/songwenjie/p/9410009.html 本文主要讨论MySQL索引的部分知识.将会从MySQL索引基础.索引优化实战和数据库索引 ...

  6. mysql索引优化比普通查询速度快多少

    mysql索引优化比普通查询速度快多少 一.总结 一句话总结:普通查询全表查询,速度较慢,索引优化的话拿空间换时间,一针见血,所以速度要快很多. 索引优化快很多 空间换时间 1.软件层面优化数据库查询 ...

  7. mySql索引优化分析

    MySQL索引优化分析 为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字 ...

  8. 【ZZ】MySQL 索引优化全攻略 | 菜鸟教程

    MySQL 索引优化全攻略 http://www.runoob.com/w3cnote/mysql-index.html

  9. mysql数据库优化课程---17、mysql索引优化

    mysql数据库优化课程---17.mysql索引优化 一.总结 一句话总结:一些字段可能会使索引失效,比如like,or等 1.check表监测的使用场景是什么? 视图 视图建立在两个表上, 删除了 ...

  10. MYSQL索引优化思维导图

    有关索引的优化.MYSQL索引优化     文章来源:刘俊涛的博客 地址:http://www.cnblogs.com/lovebing

随机推荐

  1. unity3D编辑器扩展

    编辑器扩展只是在编辑项目中运行,发布出来是不会运行的. 固定创建一个文件夹Editor:所有的资源或者代码都不会被打包进去. 01.使用MenuItem添加菜单栏按钮 脚本不需要作为组件存在,可以不用 ...

  2. ubuntu命令行卸载软件

    “apt-get”命令,这是用于管理已安装程序的通用命令. 安装:apt-get install name   卸载:apt-get remove name   卸载并清除配置:apt-get --p ...

  3. 006-完全关闭win任务栏鼠标悬停预览

    经过测试, 网上大部分的修改注册表等方法一律没有效果 最终找到一款轻量级软件完美解决问题 下载地址

  4. inux命令学习笔记(5):rm 命令

    学习了创建文件和目录的命令mkdir ,今天学习一下linux中删除文件和目录的命令: rm命令. rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目 录及其下的所 ...

  5. 基于DirectShow和FFmpeg的USB摄像头监控软件-转

    第一个版本 ### 软件版本及实现功能 0.0.1 1. USB摄像头枚举和设备信息获取2. 实时视频观看3. 24小时不间断录像,录像文件支持暴风影音播放 ### 软件说明: 软件基于 Direct ...

  6. ACM学习历程—BZOJ2956 模积和(数论)

    Description 求∑∑((n mod i)*(m mod j))其中1<=i<=n,1<=j<=m,i≠j. Input 第一行两个数n,m. Output 一个整数表 ...

  7. 移动端H5 button 默认事件

    button 在移动端下会有自带的默认事件,如果不处理的话,点击按钮的时候会有自动刷新页面的效果,原因就是button的默认事件没有阻止. 所以在点击事件里面要加上 e.preventDefault( ...

  8. INT 21H 指令说明及使用方法

    很多初学汇编语言的同学可能会对INT 21H这条指令感到困惑,不知道是什么意思,下面就以一段简单的程序为大家讲解: 例如:需要键盘输入,并且回显. AH的值需要查表取得,表在下面 指令:      M ...

  9. nodejs 上传图片(服务端输出全部代码)

    下面代码,全部都是nodejs端的,不用客户端代码.也就是,选择图片的form表单以及上传完毕预览图片的html,都是由node服务端输出的. 1 启动代码:(node upload.js) var ...

  10. win7下vs2010开发atl服务

    问题一: 编译服务后,提示出下错误 Microsoft.CppCommon.targets(113,5): error MSB3073: 命令 " ***.exe "  /RegS ...