數據庫瓶頸一般在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)居多,而統計的則是查詢,分析居多,兩種數據庫的設計必然會不一樣,因為側重點不一樣。
?