varchar只分配真正的需要的空间
尽量使用timestamp而不是datetime
单表不要太多字段
避免null字段,很难优化且占用额外空间
用整形拍存放ip
select INET_ATON("192.168.10.152") ip转为整形
select INET_NTOA("3232238232") 整形转为IP
合理的索引,使用explain来查看是否用了索引
尽量避免where子句对字段进行null值判断否则引擎会放弃使用索引进行全表扫描,尽量不要使用!=或者<>操作,否则会全表扫描
值分布稀少的字段不适合建索引
字符字段只建前缀索引,避免使用%***式的查询
字符字段最好不要做主键
myisam 引擎不支持行锁,不支持外键,不支持事务,不支持崩溃后完全恢复,支持查询同时往表里插入新记录。支持压缩表
innodb 引擎为默认引擎,支持行锁.事务.外键,支持崩溃后完全恢复。
总体来说,myisam适合做select,innodb适合密集insert和update