当前位置:Gxlcms > 数据库问题 > MySQL优化(一)

MySQL优化(一)

时间:2021-07-01 10:21:17 帮助过:17人阅读

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优化(一)

标签:mysql   not   注释   表设计   mode   name   状态   删除   prim   

人气教程排行