Mysql索引优化1
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的更多相关文章
- mysql索引优化
mysql 索引优化 >mysql一次查询只能使用一个索引.如果要对多个字段使用索引,建立复合索引. >越小的数据类型通常更好:越小的数据类型通常在磁盘.内存和CPU缓存中都需要更少的空间 ...
- Mysql 索引优化分析
MySQL索引优化分析 为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字 ...
- 知识点:Mysql 索引优化实战(3)
知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 索引原理知识回顾 索引的性 ...
- MySQL索引优化步骤总结
在项目使用mysql过程中,随着系统的运行,发现一些慢查询,在这里总结一下mysql索引优化步骤 1.开发过程优化 开发过程中对业务表中查询sql分析sql执行计划(尤其是业务流水表),主要是查看sq ...
- MySQL索引优化看这篇文章就够了!
阅读本文大概需要 5 分钟. 来源:cnblogs.com/songwenjie/p/9410009.html 本文主要讨论MySQL索引的部分知识.将会从MySQL索引基础.索引优化实战和数据库索引 ...
- mysql索引优化比普通查询速度快多少
mysql索引优化比普通查询速度快多少 一.总结 一句话总结:普通查询全表查询,速度较慢,索引优化的话拿空间换时间,一针见血,所以速度要快很多. 索引优化快很多 空间换时间 1.软件层面优化数据库查询 ...
- mySql索引优化分析
MySQL索引优化分析 为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字 ...
- 【ZZ】MySQL 索引优化全攻略 | 菜鸟教程
MySQL 索引优化全攻略 http://www.runoob.com/w3cnote/mysql-index.html
- mysql数据库优化课程---17、mysql索引优化
mysql数据库优化课程---17.mysql索引优化 一.总结 一句话总结:一些字段可能会使索引失效,比如like,or等 1.check表监测的使用场景是什么? 视图 视图建立在两个表上, 删除了 ...
- MYSQL索引优化思维导图
有关索引的优化.MYSQL索引优化 文章来源:刘俊涛的博客 地址:http://www.cnblogs.com/lovebing
随机推荐
- 之前收集的一波MaterialDesign库
material https://github.com/rey5137/material MaterialDesignLibrary md控件库,可兼容到2.2. https://github.com ...
- Codeforces 448C Painting Fence:分治
题目链接:http://codeforces.com/problemset/problem/448/C 题意: 有n个木板竖着插成一排栅栏,第i块木板高度为a[i]. 你现在要将栅栏上所有地方刷上油漆 ...
- 自定义响应结构 AjaxResult()
package com.dsj.gdbd.utils.ajax; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxm ...
- Docker与LXC、虚拟化技术的区别——虚拟化技术本质上是在模拟硬件,Docker底层是LXC,本质都是cgroups是在直接操作硬件
先说和虚拟化技术的区别: 难道虚拟技术就做不到吗? 不不不,虚拟技术也可以做到,但是会有一定程度的性能损失,灵活度也会下降.容器技术不是模仿硬件层次,而是 在Linux内核里使用cgroup和name ...
- IIS 高并发导致log记录不完全
项目测试性能过程中,对于高并发测试过程中发现log记录缺失一部分,经过调查,找到了原因是因为IIS连接数的限制,经过修改连接数,成功完成.设置如下: “点击网站”->“右击切换到功能视图”-&g ...
- CSS cursor 属性--css html 鼠标手型,鼠标形状,鼠标效果,样式
css鼠标手型cursor中hand与pointer Example:CSS鼠标手型效果 <a href="#" style="cursor:hand"& ...
- Linux-NoSQL之Redis(三)
一.Redis数据常用操作 1.string常用操作 set key1 aminglinux get key1 set key1 aming //一个key对应一个value,多次赋值,会覆盖前面 ...
- codeforces 680D D. Bear and Tower of Cubes(dfs+贪心)
题目链接: D. Bear and Tower of Cubes time limit per test 2 seconds memory limit per test 256 megabytes i ...
- Codeforces Round #402 (Div. 2) 题解
Problem A: 题目大意: 给定两个数列\(a,b\),一次操作可以交换分别\(a,b\)数列中的任意一对数.求最少的交换次数使得任意一个数都在两个序列中出现相同的次数. (\(1 \leq a ...
- vs2015解决fopen、fscanf 要求替换为fopen_s、fscanf_s的办法
在工程项目设置一下就行:项目属性 -- C/C++-- 预处理器 -- 预处理器定义,添加:_CRT_SECURE_NO_WARNINGS