varcha比固定长度占用更少存储空间,只占用需要空间,但是需要1字节保存长度
更小通常更好
简单就好,避免null
确定类型
使用enum代替字符串类型
innnodb存储引擎
事务性
外键
行级锁
多版本
按照主键聚集
所有索引包含主键列
优化的缓存:innodb把数据和内存缓存缓冲到缓存池 自动构建哈希索引
未压缩索引:索引没有使用前缀压缩,阻塞auto_increment;innodb使用表级锁产生新的auto_increment
没有缓存的count():myisam会把行数保存在表中 innodb中的count会全表扫描或索引扫描
可以适当的使用前缀索引
select count(disinct name) / count(*) from area
select count (disinct left(name, 3)) / count(*) from area
聚集索引
innodb索引保存了b-tree索引和数据行
覆盖索引
explain解释器的extra列看到using index
满足条件:
select 查询字段必须有索引全覆盖,不能在索引执行like操作
不要在选择性很差的列添加索引
check table
repair table
myisamchk
更新索引统计
1.analyze table test
show index
减少索引和数据碎片
myisam引擎: optimize table
innodb引擎:alter table engine =
表周期性创建
周期创建可以得到没有碎片和全排序索引高效表
drop table if exists area_new,area_old
create table area_new like area;
rename table area to area_old.area_new to area;