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