数据库瓶颈一般在IO和CPU

 

1、少用group by, order by

2、通过索引来排序(不要所有字段都用索引,因为insert、update要重构索引很耗时)

3、避免select *

4、少用join

5、join和子查询,还是用join来代替子查询吧

6、少用or

7、用union all代替union

8、尽早过滤,比如在多个表进行分页数据查询的时候,最好能在一个表上先过滤,在与别的外表join

9、避免类型转换

10、mysql有自带的缓存机制,不需要用memcache来做! 

11、把重复、不统一的数据当成你最大的敌人来对付

12、当心被分隔符分割你的数据,他们违反了“字段不可再分”,如某字段内容为physics/maths。

解决方案:把这些字段移到另一个表中,使用外键来连接

13、所有字段都必须完整的依赖主键而不是部分依赖

14、如果性能是关键,不要固执的去避免冗余

 

对于数据库的设计我们没有必要把三范式作为死规定,作为指导思想即可。你在做数据库设计的时候首先要明白的db是要干什么的。是面向事物的?还是面向统计分析的?面向事物的当然CRUD(create,read,update,delete)居多,而统计的则是查询,分析居多,两种数据库的设计必然会不一样,因为侧重点不一样。