1,查询语句里,用字段名代替*
select id,name,age from user
2,过滤条件尽量不要用or,难以避免
3,表设计时,字段的类型,最好用varchar代替char
--char是固定长度,可能浪费空间,varchar长度可变
4,模糊查询,最好先确定前面的数据
select id,name,age from user where name like 't%'
5,字段的值,尽量用数字不用字符串
--查的快,省空间,1个数字只占一个字符,但是一个汉字要占3个字符(utf8)
6,查询的结果范围尽量小,数据量尽量少
select id,name,age from user where name='123' and id=3
7,给字段加索引
8,每个列都可以加索引,但是不能太多,最好不能超过5个
9,对字段的值可以去重,使用distinct关键字,但是不要对太多列去重
select distinct * from user
10,过滤条件里最好不要用!= <>
11,尽量给null列设置默认值
12,批量操作
--需要一次性删除多条(10000)时,最好分批删除(按照500个的方式删除多次)
--增加大量数据时,可以只发起一个insert语句,来减少事务的开启和结束
13,group by
--尽量把数据的范围控制到最小然后再分组
select id,count(*) from user group by id having id > 100 #低效
select id,count(*) from user where id > 100 group by id #高效
14,伪删除设计
真实的开发中,很少真正的删除数据,而是把要删除的数据改变状态1 -> 0