数据库调优要点纪要
數(shù)據(jù)庫(kù)瓶頸一般在IO和CPU
?
1、少用group by, order by
2、通過(guò)索引來(lái)排序(不要所有字段都用索引,因?yàn)閕nsert、update要重構(gòu)索引很耗時(shí))
3、避免select *
4、少用join
5、join和子查詢(xún),還是用join來(lái)代替子查詢(xún)吧
6、少用or
7、用union all代替union
8、盡早過(guò)濾,比如在多個(gè)表進(jìn)行分頁(yè)數(shù)據(jù)查詢(xún)的時(shí)候,最好能在一個(gè)表上先過(guò)濾,在與別的外表join
9、避免類(lèi)型轉(zhuǎn)換
10、mysql有自帶的緩存機(jī)制,不需要用memcache來(lái)做!?
11、把重復(fù)、不統(tǒng)一的數(shù)據(jù)當(dāng)成你最大的敵人來(lái)對(duì)付
12、當(dāng)心被分隔符分割你的數(shù)據(jù),他們違反了“字段不可再分”,如某字段內(nèi)容為physics/maths。
解決方案:把這些字段移到另一個(gè)表中,使用外鍵來(lái)連接
13、所有字段都必須完整的依賴(lài)主鍵而不是部分依賴(lài)
14、如果性能是關(guān)鍵,不要固執(zhí)的去避免冗余
?
對(duì)于數(shù)據(jù)庫(kù)的設(shè)計(jì)我們沒(méi)有必要把三范式作為死規(guī)定,作為指導(dǎo)思想即可。你在做數(shù)據(jù)庫(kù)設(shè)計(jì)的時(shí)候首先要明白的db是要干什么的。是面向事物的?還是面向統(tǒng)計(jì)分析的?面向事物的當(dāng)然CRUD(create,read,update,delete)居多,而統(tǒng)計(jì)的則是查詢(xún),分析居多,兩種數(shù)據(jù)庫(kù)的設(shè)計(jì)必然會(huì)不一樣,因?yàn)閭?cè)重點(diǎn)不一樣。
?
轉(zhuǎn)載于:https://www.cnblogs.com/AmilyWilly/p/4791816.html
總結(jié)
- 上一篇: Ubuntu server下“初始化月份
- 下一篇: System.Data.SQLite 支