大數(shù)據(jù)高并發(fā)數(shù)據(jù)庫設(shè)計(jì)注意要點(diǎn)
在一個(gè)項(xiàng)目實(shí)施初始,數(shù)據(jù)庫的設(shè)計(jì)非常重要,很多時(shí)候,我們只關(guān)心和考慮到眼前的功能,而忽略了后續(xù)的可維護(hù)性和可拓展性,以及還有一個(gè)在大數(shù)據(jù)時(shí)代會(huì)遇到的高并發(fā)問題。
在設(shè)計(jì)表結(jié)構(gòu)時(shí)要注意以下幾個(gè)要點(diǎn):
1.數(shù)據(jù)行的長度不要超過8020字節(jié),如果超過這個(gè)長度的話在物理頁中這條數(shù)據(jù)會(huì)占用兩行從而造成存儲(chǔ)碎片,降低查詢效率。
2.能夠用數(shù)字類型的字段盡量選擇數(shù)字類型而不用字符串類型的(電話號(hào)碼),這會(huì)降低查詢和連接的性能,并會(huì)增加存儲(chǔ)開銷。這是因?yàn)橐嬖谔幚聿樵兒瓦B接回逐個(gè)比較字符串中每一個(gè)字符,而對于數(shù)字型而言只需要比較一次就夠了。
3.對于不可變字符類型char和可變字符類型varchar 都是8000字節(jié),char查詢快,但是耗存儲(chǔ)空間,varchar查詢相對慢一些但是節(jié)省存儲(chǔ)空間。在設(shè)計(jì)字段的時(shí)候可以靈活選擇,例如用戶名、密碼等長度變化不大的字段可以選擇CHAR,對于評論等長度變化大的字段可以選擇VARCHAR。
4.字段的長度在最大限度的滿足可能的需要的前提下,應(yīng)該盡可能的設(shè)得短一些,這樣可以提高查詢的效率,而且在建立索引的時(shí)候也可以減少資源的消耗。
查詢語句優(yōu)化要點(diǎn):
1.盡可能使用索引
2.查詢有先后順序,注意把快速條件或者索引查詢放在前面
3.應(yīng)盡量避免在 where 子句中使用 or 來連接條件,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描,如:
select id from t where num=10 or num=20
可以這樣查詢:
select id from t where num=10 union all select id from t where num=20 |
4.要避免在where中使用表達(dá)式,這樣將放棄索引,進(jìn)行全表查詢
posted on 2014-02-18 11:32 順其自然EVO 閱讀(1310) 評論(0) 編輯 收藏 所屬分類: 數(shù)據(jù)庫