目录
前言
MySQL是目前应用非常广泛的关系型数据库管理系统,它在实际应用中的性能表现往往是决定系统效率和用户使用体验的重要因素。因此,MySQL性能优化方案非常重要。MySQL性能优化方案需要从多个方面入手,包括硬件性能、数据库设计、SQL语句优化等。需要系统性的分析MySQL性能瓶颈及优化方案后,才能使其在高并发场景或大数据量下有更好的性能表现。在实际应用中,常见的MySQL性能优化方案包括使用索引、优化查询语句、优化数据库结构、调整参数配置、分库分表、使用缓存等措施。
一、设置索引
索引是一种可以让SELECT语句提高效率的数据结构,可以起到快速定位的作用。
1、索引的优缺点:
优点:某些情况下使用select语句大幅度提高效率,合适的索引可以优化MySQL服务器的查询性能,从而起到优化MySQL的作用。
缺点:表行数据的变化(index、update、delect),简历在表列上的索引也会自动维护,一定程度上会使DML操作变慢。索引还会占用磁盘额外的存储空间。
2、给表列创建索引
建表时创建索引:
create table t(id int,name varchar(20),index idx_name (name));
给表追加索引:
alter table t add unique index idx_id(id);
给表的多列上追加索引
alter table t add index idx_id_name(id,name); 或者 create index idx_id_name on t(id,name);
3、查看索引
使用show语句查看t表上的索引:
show index from t;
show keys from t;–mysql中索引也被称作keys
使用show create table语句查看索引:
show create table t\G
4、删除索引:
使用alter table命令删除索引:
alter table 表 drop index 索引名
使用drop index命令删除索引:
drop index 索引名 on 表
5、索引原理:
例如一个学生信息表,我们设置学号(stu_id)为索引:
索引页之间存在一定的关联关系,一般为树形结构;分为根节点、分支节点、和叶子节点
根节点页中存放分段stu_id的起始值,以及值所对应的分支索引页号
分支索引页中存放分段stu_id的起始值,以及值所对应的叶子索引页号
叶子索引页中存放排序后的stu_id值,该值所对应的表页号, 下一个叶子索引页的页号
stu_id建立索引后,执行select name,sex,height from stu where stu_id=13查询过程如下:
① 索引页存在关联关系,