MySQL数据库优化返回列表
上传时间:2015-02-02 内容关键字:MySQL数据库优化
索引的维护和优化--删除不用索引:
目前MySQL中还没有记录索引的使用情况,但是在PerconMySQL和MariaDB中可以通过INDEX_STATISTICS表来查看哪些索引未使用,但是在MySQL中目前只能通过慢查询日志配合pt-index-usage工具来进行索引使用情况的分析。
pt-index-usage \
-uroot -proot \
mysql-slow.log
第四章:数据库结构优化
一、选择合适的数据类型:
数据类型的选择,重点在于合适二字,如何确定选择的数据类型是否合适?
1.使用可以存下你的数据的最小的数据。
2.使用简单的数据类型。Int要比varchar类型在mysql处理上简单。
3.尽可能的使用not null定义字段
4.尽量少用text类型,非用不可时最好考虑分表。
使用int来存储日期时间,利用FROM_UNIXTIME() 和 UNIX_TIMESTAMP()进行转化。
CREATE TABLE test(
id int auto_increment not null,
timestr int,
primary key(id)
);
insert into test(timestr) values(unix_timestamp(‘2014-06-01 13:12:00’));
select from_unixtime(timestr) from test;
使用bigint存储IP地址,利用INET_ATON() 和INET_NTOA()两个函数来进行转换。
如果使用varchar(15)保持的话需要15个字节,而bigint只需要8个字节,而且更加高效。
CREATE TABLE sessions(
id int auto_increment not null,
ipaddress bigint,
primary key(id)
);
insert into sessions(ipaddress) values(inet_aton(‘192.168.0.1’));
select inet_ntoa(ipaddress) from sessions;
二、表的范式化:
范式化是指数据设计的规范,目前说到范式化一般是指第三种设计范式,也就是要求数据表中不存在非关键字段对任意候选关键字段的传递函数依赖则符合第三范式。
存在以下传递函数依赖关系:
商品名称 -> 分类 -> 分类描述
也就是说存在非关键字段 “分类描述” 对关键字段 “商品名称” 的传递函数依赖。