合适的数据类型
- 较短数据长度:
越短的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。 - char(32)可以存储的就不要用char(64);
- tinyint可以储存的就不要用int;
- 简单的数据类型:
整型数据比起字符,处理开销更小 - 应该用内置的日期和时间数据类型,不要用字符串来存储时间;
- 用整型数据存储IP;
- 尽量避免使用NULL;
B+Tree 联合索引:最左前缀原则
-
like
使用时需要注意; - 索引字段前后顺序排列需要综合考虑类型,长度,离散度等指标;
哈希索引:only in Memory
- Hash索引只支持等值比较;
- 不能使用hash索引排序;
聚簇索引:只有solidDB和InnoDB支持
- 根据主键的范围查找会大量减少磁盘IO;
- 尽量用默认的自增长做为主键,减少增加数据时的移动数据开销与碎片;
覆盖索引
- 索引项通常比记录要小,所以MySQL访问更少的数据;
- 索引都按值的大小顺序存储,相对于随机访问记录,需要更少的I/O;
- 大多数据引擎能更好的缓存索引。比如MyISAM只缓存索引;
全文索引:只有MyISAM引擎支持。