Mysql优化——前段
1.表结构
(a)主键——尽可能使用长度短、占用内存小、整形的主键
tinyint27-128到127
smallint215-32768到32767
mediumint223-8388608到8388607
int231
bigint263
(b)外键——对于批量可靠数据的插入建议去掉外键
(c)索引——在适当的表适当的列创建适当数量的适当索引,在查询优先和更新优先之间做平衡
适合添加索引的情况:在经常需要搜索的列上添加索引可以加快搜索的速度
在作为主键的列上强制该列的唯一性和组织表中数据的排列结构
在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的
在经常使用排序的列上创建索引
在经常使用where子句中的列上面创建索引
不适合添加索引的情况:对于查询中使用较少的列不加索引
对于很少数据值得列不加索引
对于定义text,image,bit的列不加索引
当修改性能远远大于检索性能是不加联合索引
联合索引:在特定的查询里联合索引的效果大于单一索引
索引长度:对于varchar,char用列的一部分创建索引
(d)使用非事务表——myisam 查询速度远远优于innodb
2.表字段
(a)优先使用enum、tinyint、时间类型,时间戳、ip用int存储。
(b)尽量缩短字段的长度
(c)优先使用notnull ,默认空字符或者特殊字符。
3.脚本程序
(a)不使用like,join 等高耗的sql,
(b)where子句尽量少字段,优先使用有索引的列
(c)查询字段尽量少,不使用*