您的位置:新葡亰496net > 网络数据库 > MySQL学习笔记后生可畏,MySQL数据库优化总括

MySQL学习笔记后生可畏,MySQL数据库优化总括

发布时间:2019-11-04 03:13编辑:网络数据库浏览(150)

    1.说明: 创建默认数据库
    create database 库名;

    MySQL 学习笔记 一

    mysql学习的笔记A

    1. MySql语句

    MySQL数据库优化总结

    一:MySQL数据库优化考量标准

    1.数据库设计(表设计合理)三范式(规范的模式)

    三范式包括:

    第一范式:1NF是对属性的原子性的约束,要求属性具有原子性,不可再分解。(只要是关系型数据库都满足)

    第二范式:2NF是记录的唯一性约束,要求记录有唯一标识,即实体的唯一性。(设立主键)

    第三范式:3NF是对字段冗余性约束,即任何字段不能由其他字段派生出来,要求字段没有冗余。(通过表外键)

    逆范式(适当的冗余):提高查询效率。PS:冗余应当放在记录尽量少的表上,避免造成空间浪费。.

    2.sql语句优化

    3.数据库参数的配置(缓存大小)

    4.恰当的硬件资源和操作系统

    二:sql语句优化步骤

    1.通过show status命令了解各种sql的执行效率

    show status命令可以显示你的MySQL数据库的当前状态。关心"Com_"打头的数据语句。

    显示当前控制台的MySQL情况:

    show status like "Com%" ; <=> show session status like "Com%";

    显示数据库从启动到此时的情况:

    show global status like "Com%";

    显示连接数据库的次数:

    show status like "Connections";

    显示服务器工作了的时间:

    show status like "Uptime";

    显示慢查询的次数(默认是10s):

    show status like "slow_queries";

    显示慢查询时间:

    show variables like "long_query_time"

    设置慢查询时间(2s):

    set long_query_time=2;

    2.定位到执行效率较低的sql语句

    MySQL数据库支持将慢查询语句记录到日志中,供程序猿分析(默认情况下不启动日志功能)。启动:进入到MySQL的安装目录bin下

    mysqld.exe --slow-query-log. //以日志功能方式启功MySQL

    3.通过explain 分析低效率的sql语句的执行情况

    explain一款非常重要的工具。这个分析工具可以对sql语句进行分析可以预测sql的执行效率。

    4.确定问题并提供相应的优化措施

    三:sql语句的几种类型

    ddl(数据库定义语言):create,alter,drop

    dml(数据库操作语言):insert,delete,update

    select

    dtl(数据库事务语言):commit,rollback,savepoint

    dcl(数据库控制语言):grant,revoke

    四:数据库存储引擎MyISAM和InnoDB比较

    1.MyISAM既不支持外键也不支持事务。InnoDB都支持。

    2.如果存储引擎是MyISAM的,则当创建一个表后有三个文件:

    *.frm(记录表结构),*.myd(记录数据),*.myI(记录索引)

    InnoDB只对应一个文件*.frm。数据存储在ibdata1文件中。

    3.对于MyISAM存储引擎数据库要定时清理:

    执行命令:optimize table 表名;

    五:sql语句优化之添加索引

    索引的原理:对于MyISAM存储引擎,索引是添加在.myI文件中。数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。再次查询速度将明显变快,但是牺牲了删除,修改,添加表数据的代价。

    索引的类型:

    1.主键索引。主键自动的为主索引(类型为Primary)主键自带索引

    2.唯一索引(UNIQUE)。唯一性同时又是索引

    3.普通索引(Index)

    4.全文索引(FULLTEXT)。只有MyISAM存储引擎支持

    5.复合索引(多列和在一起)。create index 索引名 on 表名 (列1,列2);

    创建索引:

    1.create [UNIQUE / FULLTEXT] index 索引名 on 表名 (列名...);

    2.alter table 表名 add index 索引名 (列名...);

    3.如果添加主键索引:alter table 表名 add primary key(列名);

    删除索引:

    1.drop index 索引名 on 表名;

    2.alter table 表名 drop index 索引名;

    3.如果删除主键索引:alter table 表名 drop primary key;

    查看某表的所有索引:

    1.show indexes from 表名;

    2.show keys from 表名;

    3.desc 表名;

    !!!PS!!!下列表查询将不使用索引:

    1.如果查询条件中有or,即使其中有索引也不会使用(or指令要少用)。

    2.对于使用多列索引的表,只有最左边的列才能使用到索引,其余列则不会使用索引。

    3.对于使用like查询,查询如果是"

    本文由新葡亰496net发布于网络数据库,转载请注明出处:MySQL学习笔记后生可畏,MySQL数据库优化总括

    关键词:

上一篇:windows10上安装mysql

下一篇:没有了