##############总结##########

数据库中专门帮助用户快速找到数据的一种数据结构

类似于字典的目录的索引

索引的作用:约束和加速查找

工作原理: b+树形结构 最上层是树根,中间是树枝,最下面是叶子节点(真实数据)

先找根节点: 存枝节点 索引的空间位子 : 然后根据枝节点的空间位子,来找叶子节点的真实数据

常见的几种索引:

普通索引

唯一索引

主键索引

联合索引(多列)

  -联合主键索引

  -联合唯一索引

  -联合普通索引

无索引:从前往后一条一条查询有索引:创建索引的本质,就是创建额外的文件(某种格式存储,查询的时候,先去格外的文件找,定好位置,然后再去原始表中直接查询,但是创建索引越多对磁盘也有消耗)建立索引的目的:a.额外的文件保存特殊的数据结构b.查询快,但是插入更新删除依然慢c.创建索引之后,唏嘘命中索引才能有效

#索引的种类

hash索引和btree索引
(1)hash类型的索引:查询单条快,范围查询慢
(2)btree类型的索引,b+树,层数越多,数据量指数级增长(innodb默认支持它)

1.主键索引(聚合索引)

#主键索引
create table t1(  id int primary key)

create table t1(id intprimary key(id))
#主键索引
alter table 表名 add primary key(列名);#删除主键索引
alter table 表名 drop primary key;

2.唯一索引

#创建表 & 唯一索引
create table userinfo(
id int primary key auto_increment,
name char(30) not null,
unique key ix_name(name)
)
#唯一索引

alter table userinfo add unique 索引名字(name);#删除唯一索引
alter table 表名字 drop index 索引名字

3.普通索引(辅助索引)

#创建表 & 普通索引
create table userinfo(
id int not null auto_increment primary key,
name varchar(32) not null,
index ix_name(name)
)#普通索引
alter table 表名 add index 索引名字(name)  或者 create index 索引名字 on 表名(name)
#删除索引
alter table 表名 drop index 索引名字
#查看索引
show index from 表名

4.组合索引

组合索引是将 n个列组合 合成一个索引

其应用场景为:频繁的同时使用n列来进行查询,如:where name = 'alex' and email = 'alex@qq.com'。

#联合普通索引
create index 索引名 on 表名(列名1,列名2);

最左前缀匹配:create index ix_name_email on user(name,email);select * from userinfo where name = 'alex';select * from userinfo where name = 'alex' and email='alex@oldBody';select * from userinfo where  email='alex@oldBody';如果使用组合索引如上,name和email组合索引之后,查询(1)name和email ---使用索引(2)name        ---使用索引(3)email       ---不适用索引对于同时搜索n个条件时,组合索引的性能好于多个单列索引

索引注意点

注意点:
1.条件1 and 条件2:所有条件都成立才算成立,但凡要有一个条件不成立则最终结果不成立 这个mysql做了优化 查询的时候 只要其中有一条有索引,就会走索引
2.条件1 or 条件2:只要有一个条件成立则最终结果就成立,这个未做优化
3.加完索引后 只要带加索引的那一列才会起到加速作用
4.用四则运算条件的时候 把计算写后面 where id = 3000/3; 不能写成id*3=3000
5.like 这类语法的时候 尽量精准 能匹配多少算多少

优化神器 explain

explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。

mysql> explain select id from s1 where id=1000; #在辅助索引中就找到了全部信息,Using index代表覆盖索引
+----+-------------+-------+------------+------+---------------+--------+---------+-------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+--------+---------+-------+------+----------+-------------+
| 1 | SIMPLE | s1 | NULL | ref | idx_id | idx_id | 4 | const | 1 | 100.00 | Using index |
+----+-------------+-------+------------+------+---------------+--------+---------+-------+------+----------+-------------+
1 row in set, 1 warning (0.03 sec)

#主要查看  rows 影响的行

详情看 这里 http://www.cnblogs.com/yycc/p/7338894.html

 慢查询优化的基本步骤

慢日志- 执行时间 > 10- 未命中索引- 日志文件路径
my.conf 内容
slow_query_log = ON
slow_query_log_file = d:/...
show variables like '%query%';
注意:修改配置文件之后,需要重启服务
MySQL 5.6:
slow-query-log=1
slow-query-log-file=slow.log
long_query_time=37

转载于:https://www.cnblogs.com/zaizai1573/p/10300974.html

python mysql索引 优化神器explain 慢查询相关推荐

  1. MySQL第9天:MySQL索引优化分析之join查询

    MySQL索引优化分析之join查询 #编写时间:2017.3.12 #编写地点:广州 常见join查询: 1.SQL执行顺序:手写.机读.总结 (1)手写 (2)机读 (3)总结 2.join图 3 ...

  2. Mysql 性能优化神器Explain详解

    文章目录 Explain的作用 博文背景 Explain 使用方法 Explain之ID说明 1. ID值相同 2.ID值不同 3.ID值相同,ID值不同共存 Explain的select_type详 ...

  3. explain的用法_这次是真拯救了我,MySQL索引优化,explain讲得非常清楚了

    前言: 这篇文章主要讲 explain 如何使用,还有 explain 各种参数概念,之后会讲优化 一.Explain 用法 模拟Mysql优化器是如何执行SQL查询语句的,从而知道Mysql是如何处 ...

  4. MySql索引优化及Explain工具使用

    更多内容请浏览本人博客 explain 工具介绍 使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈 在 select 语句之前增加 explain 关键字,My ...

  5. 转:MySQL性能优化神器Explain使用分析

    详细请点击 https://blog.csdn.net/qq_38293564/article/details/80883704 以下是自己总结: 接下来我们来重点看一下比较重要的几个字段 type ...

  6. MySql优化神器 Explain工具介绍

    使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析查询语句或是结构的性能瓶颈.在select语句之前增加explaion关键字,MySQL会在查询上设置一个标记,执行查询会返回执行计划的信息, ...

  7. Python mysql 索引原理与慢查询优化

    一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...

  8. MySQL 索引分析除了 EXPLAIN 还有什么方法?

    作者 | adrninistrat0r 责编 | 夕颜 出品 | CSDN(ID:CSDNnews) 前言 对于非数据库开发人员而言,难以对MySQL源码进行分析或调试,接近一个黑盒,但MySQL提供 ...

  9. MySQL第11天:MySQL索引优化分析之性能分析

    MySQL索引优化分析之性能分析 一.MySQL Query Optimizer 二.MySQL常见瓶颈 三.Explain(执行计划) 1.什么是执行计划?          2.执行计划能干什么? ...

最新文章

  1. Java: 面向对象程序设计(上)
  2. java.lang.ClassNotFoundException: Didn't find class com.tzutalin.dlibtest.MainActivity_
  3. Java之定时任务详解
  4. SAP HANA中的SLT简介
  5. layui 启用禁用_在不启用Apple Pay的情况下禁用烦人的Apple Pay通知
  6. MySQL命令之mysqlhotcopy -- 热备份
  7. 特征工程之特征选择_特征工程与特征选择
  8. 于.net开发平台项目案例集锦
  9. kloxo 一行安装 -cnblogs
  10. Docker安装Mysql 案例和Tomcat测试
  11. Windows 软件安全---注入安全
  12. 定义cisco设备的log级别
  13. 【洛谷 P3299】 [SDOI2013]保护出题人 (凸包,三分,斜率优化)
  14. PROFIBUS DP和PROFINET IO区别
  15. python实现电子邮件编程
  16. 乔布斯斯坦福毕业演讲,这是我听过最精彩的毕业演讲!
  17. pytorch保存模型方法
  18. x*=3+5**2的计算结果python_下面代码的执行结果是________ x = 2 x *= 3 + 5**2
  19. LC振荡器稳定度与品质因数的关系
  20. AUTOCAD使用心得

热门文章

  1. 采用矩阵+深度优先算法解决迷宫问题
  2. [WinAPI] API 11 [创建目录]
  3. controller的frame
  4. Mobile 拨打电话 发送短信
  5. [转载zz] Python3 输入和输出之序列化与反序列化
  6. Java2WSDL 和 WSDL2Java(Axis)
  7. Android activity生命周期
  8. Sprint第二个冲刺(第八天)
  9. C语言动态内存相关函数
  10. 颜色空间模型(HSV\LAB\RGB\CMYK)