一、SQL 语句
1、Select:尽量不用Select星号语句,因为Select星号会全表扫描,导致sql语句性能大大降低。使用具体的列代替 星号,避免多余的列2、Where:(1) where 条件避免 前面加函数和操作(2) 避免在where子句中使用!=或<>操作符,否则将引擎放弃索引进行全表扫描3、Like:like 避免开头% 全局扫描4、In:(1) in 性能大于 join(2) 可以使用in(select )(3) exists进行代替二、两方面 内存(程序) 和 磁盘(数据库) 去考虑 ,要预估数据量 放内存中更快
三、必要可以冗余 ,多表可以冗余 ,经常变动的列 。
比如用户表 姓名和部门 冗余到记录表里面 还有一个好处 可以获得到当时存的真实数据(名字 部门)优化原因 :频繁去left表拿到常用字段四、索引
1、主键索引 必建立2、复合索引 命中 最左特性3、建立索引的列:(1) 用于查询的字段 where(2) 用于排序或分组的字段 order by 、group by(3) 范围查询(时间范围) 、datetime(4) 需要统计(count、sum、avg)(5) 经常需要连表查询的字段 left on