MySQL优化
Posted min-na
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL优化相关的知识,希望对你有一定的参考价值。
select inet_aton();字符串转整形
select inet_ntoa();整形转字符串
1.尽可能使用整形代替字符串:
2.金额的存储
计算机中不能对小数转化为二进制
定点数。小单位,大数额。
price decimal(8,2)定点数,有两位小数的定点数
price int,bigint小单位,大数额
注意,定点数是非常大的数
转成整数,整型存不了
3.尽可能选择小的数据类型
4.尽可能使用not null
5.字段注释完整
6.单张表字段数量不要过多
20-30个极限了
设计表结构的时候可以预留几个字段,快速修改表结构
7.关联表设计
1:1 一对一
1:n ; n:1 一对多;多对一
M:n 多对多
8.范式NF
满足第三范式:
独立数据独立建表
表中存在与业务逻辑无关的ID主键
表之间的关系由关联字段(关联表)进行表示
优势:减少数据的冗余(重复)和易于维护更新
9.存储引擎
现在Oracle主推InnoDB存储引擎
10.优化该表:
optimize table table-name
释放空间,去体积
11.mysql中的锁
锁的作用是避免资源争用的机制功能
流程:先加锁后用
类型:
共享锁 读锁,S-lock 自己能读不能写,别人能读,写时堵塞
排它锁 写锁,X-lock,独占锁 自己能读能写,别人不能读不能写
InnoDB同时实现了表级和行级锁定
表锁:
加锁:lock tables table-name1,table-name2 READ|WRITE;
解锁: unlock tables;
行锁:
加锁:select * from table-name1 where lock in share mode;
select * from table-name1 where for update;
解锁: unlock tables;
12.索引,最重要最常用的优化手段
使用索引的目的,加快检索
关键字相对于数据本身,数据量小
关键字都是排序的
索引的类型:
普通index索引、唯一unique index索引、主键primary key索引、全文fulltext索引
查看表索引:show indexes from table;
添加索引:alter table table-name add unique key(key-name);
删除索引:alter table table-name drop key key-name;
MySQL索引-执行计划的工具:explain select * from user\G
13.索引在哪些场景会被使用
(1)where(2)join(3)order by(4)索引覆盖
14.索引语法注意
(1)字段统一在最左侧
(2)like,不以通配符%开头
like 实际能用,但仅仅只使用在匹配开头字符
(3)复合索引非最左侧字段,不能使用索引
(4)or保证两边条件都有索引可用
(5)状态值,不容易使用到索引
如:男、女和保密
状态值会导致一个状态值同事匹配大量的记录
以上是关于MySQL优化的主要内容,如果未能解决你的问题,请参考以下文章