【MySQL】MySQL学习笔记

1.学习MySQL,我们学习什么?

(1)SQL基本语法

操作方面

insert

update

delete

查询方面:

select

优化方面:

explain

(2)开发、优化以及管理

开发方面:

存储引擎

字符集

数据类型


优化方面:

索引

事务

  (3)引用资料

正文

(2)开发、优化以及管理

开发方面:

存储引擎

目前只关注:MyISAM以及InnoDB

基本介绍:

(i)MyISAM:默认存储引擎,查询快,无存储上限,表锁

附注:每个MyISAM存储成三个文件:表定义、存储数据、存储索引,平均IO,可以获取更快速度。

(ii)InnoDB:具备事务安全,数据处理慢,行锁(效率更低)


数据类型

数据类型不能一概而论,需要根据存储引擎来。

最重要的两个数据类型比较:

char varchar :

MyISAM:固定长度代替可变长度

Memory:都是固定长度

InnoDB:建议使用可变长度

text blob

建议:(1)在不必要的时候避免检索大型的BLOB或者TEXT值

    (2)把text或者BLOB分离到单独的表中


浮点数 定点数

注意:存在float不精确的问题,使用需要注意


字符集

字符集(存储)和校对(比较字符串)规则


关于字符集的设置:

此处暂略


优化方面

(1)索引

什么是索引?为什么要用索引?怎么使用索引?

1.为什么使用索引?提高select操作性能。

2.怎么使用索引?

设计原则:

(1)使用唯一索引。反之:重复性高,索引性能越发低下

(2)使用短索引。例子:如列orderNo为200个字符,但是前十位已经是多数值唯一,那么索引仅到10为止。

(3)利用最左前缀。

(4)不要过度索引。因为:i)占用磁盘空间;ii)增加写操作性能损耗。

(5)索引建立应该在where列。


如何优化?

1.show status 获取session级别的统计结果和global级别的统计结果。可以了解该数据库是以插入为主还是以查询为主。

2.定位执行效率比较低的SQL语句。

(1)可以通过慢查询日志定位那些执行效率较低的sql语句。

 (2)通过explain分析低效SQL的执行计划

explain后一些字段的备注:

a) table:输出结果集的表

b) type 表示表的连接类型

System 最佳的连接类型

All 连接没有使用索引时,全表扫描

ref 使用索引进行表连接时type的值为ref

c)key 表示使用的索引

d)  key_len 索引长度

e) rows 扫描范围

f )  extra 执行情况的说明和描述

(3)查看索引的使用情况:show status like 'Handler_read%';

 (4)确定问题,采取优化。

优化方法:

i) ANALYZE TABEL

ii)CHECK TABLE

iii) CHECKSUM TABLE

IV)使用optimize table



一般出现添加了索引但是效率没有提高的原因:

(1)MySQL本身会做一个判断,如果它预估使用索引会慢于全表搜索,他就拒绝用索引。

(2)条件有or,即使其中有条件带索引也不会使用

(3)如果多列索引,不使用第一部分,则不会使用索引,比如(user_name,age,city)作为一个组合索引,如果不使用user_name作为索引开头,则不用索引

(4)like查询是以%开头

(5)如果列类型是字符串,则一定要在条件上添加引号,否则不适用索引



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值