1.尽量避免NULL
如果查询中包含可为NULL的列,对MySql来书更难优化。
2.浮点类型
无论使用float还是double,MySql使用double作为内部浮点计算
3.Decimal
对Decimal的计算需要额外的计算开销 可以考虑使用bigint代替Decimal,将单位变小
4.varchar(5)和varchar(200)存储’hellow’
他们的存储来显是一样的,但是varchar(200)会消耗更多的内存MySql通常会分配固定大小的内存块来保存
部值(内部临时表)
5.BLOB TEXT
Innodb使用外部存储区域进行存储,表中需要一个1~4字节存储一个指针,外部存储实际值
6枚举类型
表中存的是一个hash的索引值 是整数型 因此使用该类型会使表的大小减少
7.TIMESTAMP
特性:默认情况下,如果插入时没有指定第一个TIMESTAMP列的值,MySql则会设置这个列的值为当前时间,在插入一条记录时,MySql会默认更新第一个TIMESTAMP列的值,TIMESTAMP列默认NOT NULL 比DATATIME更高效
8.使用联合索引
更具MySql的特性,只能从左到右的使用联合索引,而且不能跳过缩影中的列,如果查询某个列是范围查询,
且该范围是数量有限的,可以使用对个等于条件来代替范围条件
9.hash索引只支持等值查询
10.索引优化
当出现服务器对多个索引做相交操作时(通常是多个and),通常意味着需要一个包含所有相关列的多列索
引,而不是多个独立的单列索引
当服务器需要对多个索引做联合操作时(通常是多个or),通常需要消耗大量CPU和内存资源在算法的缓存
、排序和合并操作上。特别是当其中有些索引的选择性不高。需要合并扫描返回的大量数据的时候