MySQL重温笔记-索引
mysql分客户端、服务层、存储引擎层,而索引的实现就是在存储引擎层,因此各个不同的存储引擎之间的索引都有细微的差别。
【B-Tree索引】
- MyIsam使用前缀压缩技术使得索引更小,Innodb则按照原数据格式进行存储
- MyIsam索引通过数据的物理位置引用被索引的行,Innodb则根据主键引用被索引的行。
- 索引树中的节点是有序的,所以索引适合全键值、键值范围或键前缀查找(最左)。因为是顺序的,所以也适合排序。
- 联合索引的索引顺序很重要
【哈希索引】
- 基于哈希实现。
- 只有Memory引擎显式支持哈希索引
- 哈希索引只包含哈希值和行指针,而不存储字段值
- 哈希索引数据并不是按照索引值顺序存储的
- 哈希索引不支持部分索引列匹配查找,哈希索引值是使用索引列全部内容来计算哈希值的
- 哈希索引只支持等值比较查询
- 访问哈希索引的数据比较快,但是有多哈希值冲突的风险。
【全文索引】
查找匹配的是文本中的关键词,类似于搜索引擎
【索引的优点】
- 减少表数据的扫描数量,不用全表扫描了
- 避免排序和临时表【索引按顺序的,节省了排序时间】。
- 将随机I/O变为顺序I/O
【重点】【高效实用索引的技巧】
- 在索引列不要进行计算,例如下
select student_id from student where student_id + 1 =5;
给text类型添加索引时,可以使用前缀索引,就是将值的内容截取一部分作为索引。
联合索引(多列索引)要注意列顺序。一般是考虑的因素是,使用率最高的列放到索引前列,避免随机IO,排序。
- 聚簇索引,表示数据行和相邻的键值紧凑的存储在一起。innodb默认会拿主键作为聚簇索引,若没有主键,就是用非空索引,主键为顺序的整数更加有利。
- 表中的索引越多,插入的速度越慢,准确的说是insert update delete
- 索引可以让查询锁定更少的行
- 确保任何group by和order by中的表达式只涉及到一个表中的列。
- 除非确实需要服务器小虫重复的行,否则一定要使用union all,mysql是通过创建临时表的方式来执行union查询。
【MySQL能够使用三种方式应用WHERE条件,从好到坏的顺序为】
- 在索引中使用where条件来过滤不匹配的记录,在存储引擎层完成
- 使用索引覆盖扫描来返回记录,直接从索引中过滤不需要的记录并返回命中的结果,在服务器层完成的
- 从数据表返回数据。
【查询的执行流程】
转载于:https://www.cnblogs.com/ymkfnuiwgij/p/8642587.html
MySQL重温笔记-索引相关推荐
- 高性能mysql学习笔记--索引
高性能mysql 五:索引 1,B-Tree索引 全值匹配:匹配所有列. 匹配最左前缀:只使用索引的第一列. 匹配列前缀:只使用索引的第一列. 匹配范围值:只使用索引的第一列. 精确匹配某一列并范围匹 ...
- mysql学习笔记-索引优化【1】-索引失效原因
索引失效应该避免 案例(索引失效) # demo 数据 DROP TABLE IF EXISTS `staffs`; CREATE TABLE `staffs` (`id` int(11) NOT N ...
- 【面试题笔记-Java】MySQL数据库、索引、MVCC等知识点(自己整理)
MySQL 1.MySQL的索引 索引就是帮助MySQL高效获取数据排好序的数据结构 索引数据结构: 二叉树 红黑树 hash表 B树 1.单指索引一个索引只包含单个列,一个表可以有多个单列索引 2. ...
- MySQL学习笔记 04、MySQL进阶(索引、事务、锁)
文章目录 前言 一.MySQL的目录结构 1.1.认识目录文件 1.2.配置文件设置 windows平台下设置 linux环境下设置 二.MySQL的系统架构 2.1.MySQL系统的逻辑架构: 2. ...
- mysql原生建立索引_MySQL学习笔记之索引
索引是存储引擎用于快速找到记录的一种数据结构. 索引对于良好的性能非常关键.尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要.在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显,但 ...
- mysql 学习笔记--存储引擎、索引、sq优化
全面的 mysql学习笔记–通用语法.函数.数据类型.约束.多表查询.事务 全面的 mysql学习笔记–存储引擎.索引.sql优化 全面的mysql学习笔记–视图/存储过程/触发器.锁.InnoDB引 ...
- MySQL学习笔记-主键索引和二级索引
文章目录 MySQL学习笔记-主键索引和二级索引 1.笔记图 2.索引的常见模型 3.InnoDB 的索引模型 4.主键索引和普通索引查询的区别 5.如何选择主键字段 6.笔记图 7.回表过程 8.最 ...
- day29 | 黑马程序员Java全程笔记 | 第二阶段MySQL高级事务-索引-视图-触发器-存储过程
目录 01.反馈 02.回顾 03.并发访问MySQL-问题概述 并发访问的问题 04.并发访问MySQL-问题演示 05.并发访问MySQL-read-committed解决脏读问题 06.并发访问 ...
- MySQL 学习笔记-第三篇-索引、存储过程和函数、视图、触发器
目录 1 索引 1.1 索引简介 1.2 创建索引 1.3 删除索引 1.4 MySQL 8.0 的新特性 1 -支持降序索引 1.5 MySQL 8.0 的新特性 2 -统计直方图 2 存储过程和函 ...
最新文章
- ANNOTATION PROCESSING 101 by Hannes Dorfmann — 10 Jan 2015
- 续上篇随笔:陈勇提示做分批载入需要用到的数据
- 传统登录实现方式问题思考
- 1443B. Saving the City
- 查了一晚上的资料,累啊。
- Android URI简介
- IEEE745浮点数格式
- Swagger入参为List
- 小提琴1234567位置图解_小提琴入门指法(小提琴1234567位置图解)
- linux下解压system.img,小白如何修改解包打包system.img
- 营销/网赚/seo/淘宝资料收集下载
- ubuntu上安装drcom
- 多御安全浏览器快捷键汇总
- 酸奶能通便吗?身体知道酸奶用效果给你答案
- 软件开发公司管理手册
- c陷阱与缺陷总结-”悬挂“else
- 《一套适合 SAP UI5 开发人员循序渐进的学习教程》读者意见反馈和下一步写作计划表
- 秀动自动抢票 selenium 版本发布
- DHCP snooping 原理和工作工程:
- Tikz作图教程:动手 VS 动脑? 97行代码 VS 6行代码?