字段相关
-
优先选择符合存储需要的
最小
的数据类型
因为列的字段越大,建立索引时所需要的空间也就越大,这样一页中所能存储的索引节点的数量也就越少,在遍历时所需要的 IO 次数也就越多,索引的性能也就越差。 -
简单的数据类型优先
-
用
VARCHAR
不用char
,VARCHAR
的长度只分配真正需要的空间。 -
使用
TIMESTAMP
和DATETIME
而不是字符串
存时间类型,TIMESTAMP又优于DATETIME,TIMESTAMP存不下才用DATETIME -
避免使用
NULL
字段,因为很难查询优化且占用额外索引空间
查询相关
避免查询中筛选大量数据,可以通过limit限制;
不要使用select *
这种全表扫描的语句
可通过开启慢查询日志
来找出较慢的SQL
不做列运算
例如:SELECT id WHERE age + 1
= 10这样的sql就很不好
任何对列的操作都将导致表扫描
,它包括数据库教程函数、计算表达式等等,查询时要尽可能将操作移至等号右边
拆分大事物
一个事物只能在一个cpu运算;大语句拆小语句,减少锁时间;一条大sql可以堵死整个库
避免%xxx
式查询
使用同类型进行比较,比如用’123’和’456’比,123和456比,而不要用‘123’和456比。
尽量避免在WHERE子句中使用!=或<>
操作符,否则会放弃使用索引而全表扫描