常見的數(shù)據(jù)庫優(yōu)化方法:索引(數(shù)據(jù)庫),緩存,分表,分庫,sql優(yōu)化。
索引:創(chuàng)建索引一般有以下兩個(gè)目的:維護(hù)被索引列的唯一性和提供快速訪問表中數(shù)據(jù)的策略。95% 的數(shù)據(jù)庫能 問題都可以采用索引技術(shù)得到解決。索引有助于提高檢索性能,但過多或不當(dāng)?shù)乃饕矔?huì)導(dǎo)致系統(tǒng)低 效。因?yàn)橛脩粼诒碇忻考舆M(jìn)一個(gè)索引,數(shù)據(jù)庫就要做更多的工作。過多的索引甚至?xí)?dǎo)致索引碎片。
緩存:hibernate,spring3有緩存模塊
分表:針對(duì)每個(gè)時(shí)間周期產(chǎn)生大量的數(shù)據(jù),可以考慮采用一定的策略將數(shù)據(jù)存到多個(gè)數(shù)據(jù)表中。
分庫:就是將系統(tǒng)按照模塊相關(guān)的特征分布到不同的數(shù)據(jù)中,以提高系統(tǒng)整體負(fù)載能力。
sql優(yōu)化
1.in 和 not in 也要慎用,因?yàn)镮N會(huì)使系統(tǒng)無法使用索引,而只能直接搜索表中的數(shù)據(jù)。
2.當(dāng)判斷真假是,如果帶and 或者 or :
(當(dāng)存在 “where 條件1 and 條件2” 時(shí),數(shù)據(jù)庫先執(zhí)行右邊的語句)
and盡量把假的放到右邊(一個(gè)為假就為假) Or盡量把為真的放到右邊(一個(gè)為真就為真)
3.應(yīng)盡量避免在 where 子句中對(duì)字段進(jìn)行表達(dá)式操作,這將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描。
4.很多時(shí)候用 exists是一個(gè)好的選擇
5.充分利用連接條件,在某種情況下,兩個(gè)表之間可能不只一個(gè)的連接條件,這時(shí)在 WHERE 子句中將 連接條件完整的寫上,有可能大大提高查詢速度。
6.使用視圖加速查詢