1、建立索引会提高查询速度,但是添加或修改数据时有额外的工作重新建立索引。索引数不要超过字段的20%,不在索引列计算,会导致索引失效
2、任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。
3、通配符(%)在搜寻词首出现,不使用索引。通配符如此使用会降低查询速度。然而当通配符出现在字符串其他位置时,优化器就能利用索引。
4、任何在Order by语句的非索引项或者有计算表达式都将降低查询
5、explain分析sql语句的性能。
6、主键,自增,不修改(INNODB)
7、Sql语句尽量简单,一条大sql拆分成多个sql
8、保持事务短小,一个大事务拆分多个小事务
9、少用存储过程、触发器、mysql函数
10、尽量不用select *,只取需要的列
11、同一字段or改成in(字数建议少于200)
12、不同字段or改成union
13、避免负向查询,not,!=,<>, !>,!<,not exist,not in,not like
14、Limit(m,n)m越大越慢
15、数据不去重,union all 优于union
16、高并发DB不建议2个表以上的join
17、同数据类型比较,字符对字符、数字对数字,content =1 content=’1’
18、 同一字符UTF8,校对规则utf8_general_ci,乱码set name UTF8
19、库表名大小写敏感,统一小写,字段名大小写不敏感。(windows下都不区别)
20、避免用Mysql保留字,加``
21、Show profile、show processlist、show query_response_time、mysqlsla、mysqldumpslow、explain
22、Select sql_no_cache * from