MySql教程

mysql 性能优化(一)简述索引、B树

本文主要是介绍mysql 性能优化(一)简述索引、B树,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、启动操作

  • 开机自动启动

    chkconfig mysql on

  • 关闭开机自动启动

    chkconfig mysql off

  • 检查开机自动启动

    ntsysv

    • 代表开机自动启动
  • 登陆操作

    mysql -u 用户名 -p 按提示输入密码

二、mysql server

在这里插入图片描述

服务层注意:有时导致我们查询的sql与预想结果不一致,其实就是服务增sql优化器对我们执行的sql进行了优化,例如:一个表组合索引 a b c 三个字段,组合索引需要满足最左原则,预想如下sql是不会走索引的,实际可能会走索引。原因就是sql优化器对我们的语句进行了优化

select a,b,c from table where c =1 and b=1 and a=1

InnoDB与MyISAM主要区别

InnoDB(mysql 默认)MyISAM
优先级事物优先性能优先
优势适合高并发操作查询效率高
行所表锁
  • 查询数据库支持的引擎,DEFAULT默认的,yes支持的,不支持的

    SHOW ENGINES;
    

    在这里插入图片描述

  • 行模式";" 列模式“\G”,小写g不生效
    在这里插入图片描述
    在这里插入图片描述

  • 查看当前的引擎

    show variables like"%storage_engine%";
    

    在这里插入图片描述

  • 指定表引擎 MYISAM

    CREATE TABLE `test`.`table1`  (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) NULL,
      PRIMARY KEY (`id`)
    ) ENGINE = MEMORY;
    

三、sql优化

sql优化其实主要就是优化索引

索引(index):是帮助mysql高效获取数据的数据结构,索引是数据结构(树:B数(默认),hash树…)
- 相当于书的目录
- B树:小的放左,大的放右

原因:

  1. 性能低
  2. sql执行时间太长
  3. 等待时间太长
  4. sql语句欠佳(连接查询)
  5. 索引失败
  6. 服务器参数设置不合理(缓冲区,线程数等待 )

SQL语句

  • 编写过程

    select … from …join…on…where. …group by …having …order by… limit…

  • 解析过程

    from…on… join…where…group by …having …select …order by …limit …

索引的弊端

  1. 索引本身很大,可以存放到内存或者硬盘中(通常硬盘中)
  2. 索引不是所有情况都适用
    1. 少量数据
    2. 频繁更新的字段
    3. 很少使用的字段
  3. 提升查询的效率,降低增删改的效率( 增删改,修改原数据后,同时也修改索引表)

索引的有点

  1. 提高查询的效率(降低io使用率 )
  2. 降低cpu使用率(例如:order by 如果没有索引则需要从新对表排序;有索引的话因为是B树本身是排好顺序的结构,因此在排序时可以直接使用 )

B树

B树一般指B+tree,数据全部存放在叶节点上
B+树中查询任意数据的次数n次(B+树的高度)
在这里插入图片描述
三层B树大约可以放上百万条数据

四、索引

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

主键索引

不可以为null,不能重复

单列索引

一个表可以有多个单值索引

创建索引方式一

create 索引类型  索引名  on 表名(字段);

创建索引方式二

alter table 表名 add  index 索引名 (字段1);

唯一索引

不能重复,可以为null

创建索引方式一

create unique index  索引名  on 表名(字段1);

创建索引方式二

alter table 表名 add  unique index 索引名 (字段1);

复合索引

多个列构成的索引,例如,索引(name,age),复合索引并不是必须同时用,而是满足使用最左原则即可 ,使用时不能跨列

创建索引方式一

create index  索引名  on 表名(字段1,字段2);

创建索引方式二

alter table 表名 add  index 索引名 (字段1,字段2);

删除索引

drop index 索引名 on 表名; 

查询表索引

show index from 表名; 
这篇关于mysql 性能优化(一)简述索引、B树的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!