认识索引

为什么优化sql

原因:性能低、执行时间长、等待时间长 、sql语句欠佳(链接查询)、索引失败、服务器参数设置不合理(缓冲、线程数)

a.sql:

编写顺序:

select dinstinct(去重)–> from–> join–> on–> where–> group by–> having–> order by–> limit

编译顺序:

from–> on–> join–> where–> group by–> having–> select dinstinct(去重)–> order by–> limit

b.sql优化,主要就是优化索引

索引:相当于书的目录
索引:index 是帮助mysql高效获取数据的数据结构。索引是数据结构(树:B+树、Hash树等),mysql默认使用就是B树。

在这里插入图片描述

索引的弊端:

  1. 索引本身很大,可以存放在内存/硬盘(通常硬盘)
  2. 索引不是所有情况都适用(以下情况不建议使用)
    a.数据量小的情况下
    b.频繁更新字段
    c.很少使用的情况
  3. 添加索引会降低增、删、改的效率(不但表数据要变,索引数据也会改变)
    优势:
    a.提高查询的效率(降低了IO的使用率)
    b.降低CPU使用率(因为本身B树索引就是排好序的结构,因此在排序时可以在直接使用)
    在这里插入图片描述

索引分类:

主键索引:不能重复,一般用于id列 不能为null
唯一索引:不能重复,一般用于id列 可以为null
单支索引:单列,一个表可以有多个单支索引
复合索引:多个列组成的索引(相当于二级目录)

创建索引

方式一:
语法:create 索引类型 索引名 on 表名(字段)
单值:create index name_index on stu(name)
唯一:create unique index id_index on stu(id)
复合:create index name_age_index on stu(name,age)
方式二:
语法:alter table 表名 add 索引类型 索引名 (字段)
单值:alter table stu add index name_index(name)
唯一:alter table stu add unique index id_index(id)
复合:alter table stu add index name_age_index(name,age)

注意:如果一个字段是primary key,则该字段默认就是主键索引

删除索引

drop index 索引名 on 表名;
drop index name_index on stu;

查询索引

show index from 表名 ;
show index from 表名 \G或\g;
官网优化方法:https://dev.mysql.com/doc/refman/5.5/en/optimization.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值