主要包括存储引擎、索引、sql语句
一、存储引擎
目前最常见的是InnoDB和MyISAM两个存储引擎
(1)InnoDB:支持事务处理,提供行级锁、外键约束索引,行锁
(2)MyISAM:支持全文搜索,表锁
对于经常需要增删改操作的表建议使用InnoDB,因为有事务处理(要么成功要么失败回滚),而需要大量查询操作的表建议用MyISAM
二、索引
索引可以大大提高MySQL的检索速度
(1)普通索引:由关键字KEY或INDEX定义的索引,唯一任务就是加快访问速率
(2)唯一索引:索引列的值必须唯一,但允许有空值,每个表可以有多个唯一索引,唯一索引不可以被其他表引用为外键
(3)主键:主键索引是唯一索引的特定类型,它要求主键中的每个值都唯一,并且不能为空,每个表只能有一个主键,可以被其他表引用为外键
但是索引并不是越多越好,可能加快了select但又减慢了update和insert
(1)维护重建索引要耗费时间,这种时间会随着数据量的增加而增加
(2)索引需要占物理空间
(3)对表的数据进行增删改时,索引需要动态的维护,这样就降低了数据的维护速度
对于常用where及 order by 的列可以添加索引加快查询速率
三、sql语句
(1)select时,不要用*,而是写需要获取的字段名,避免获取多余的数据浪费资源
(2)select时,避免在 where 子句中使用 or 来连接条件,可以用union。select id from player where status=1 union select id from player where status=2;
(3)select时,where子句对表字段避免用对null值判断,尽量设置字段默认值为 0或其他
(4)用exist和not exist 替换in和not in
(5)避免在where查询时进行表达式操作
(6)使用join代替子查询