資料庫優化總結

2021-07-05 21:41:21 字數 1158 閱讀 9842

以下是自己對資料庫的一些總結,如果有錯的地方,希望大家及時的提醒我。。。

1).對查詢比較平凡的表中的列加索引;

2).對像資料字典型別的表我們可以在程式啟動過程中就載入到非關聯式資料庫。

3).對sql的優化:

1.包含時間段的列的表,盡量每次查詢都需把時間帶上;

2.select語句中用具體的列代替「*」;

3.根據表中的資料情況,選擇最優的表名順序;

4.減少資料庫的訪問次數(比如:獲取使用者許可權,不要遞迴查詢);

5.注意關聯、group by的使用;

6.使用exists、not exists 代替in、not in。他們的效率比in、not in(它不能應用表的索引) 高很多。

注:oracle試圖將其轉換成多個表的連線,如果轉換不成功則先執行in裡面的子查詢,再查詢外層的表記錄,如果轉換成功則直接採用多個表的連線方式查詢。由此可見用in的sql至少多了乙個轉換的過程。一般的sql都可以轉換成功,但對於含有分組統計等方面的sql就不能轉換了。

7. is null 或is not null操作(判斷字段是否為空)

判斷字段是否為空一般是不會應用索引的,因為索引是不索引空值的。不能用null作索引,任何包含null值的列都將不會被包含在索引中。即使索引有多列這樣的情況下,只要這些列中有一列含有null,該列就會從索引中排除。也就是說如果某列存在空值,即使對該列建索引也不會提高效能。任何在where子句中使用is null或is not null的語句優化器是不允許使用索引的。

推薦方案:用其它相同功能的操作運算代替,如:a is not null 改為 a>0 或a>』』等。不允許欄位為空,而用乙個預設值代替空值,如申請中狀態字段不允許為空,預設為申請。

4).對**優化:

1).使用mybatis、spring jdbc 代替hibernate;

2).減少對資料庫的查詢;

3).對有時間段查詢的,盡量傳查詢時間引數;

資料量比較大的大情況

1).對資料進行實時的備份,一定時間內對實時資料庫中的資料進行清理;

2).對於具有統計功能的,採用資料拉取工具定時對資料進行統計並把統計結果放入統計表中;

3).對資料表進行水平和垂直分割;

4).採用集群方案;

5).對資料量大,關聯性不強,查詢也非常少的資料可以放到效能比較好的mongodb中;

資料庫優化總結

3.應盡量避免在 where 子句中使用 或 操作符,否則將引擎放棄使用索引而進行全表掃瞄。4.應盡量避免在 where 子句中使用 or 來連線條件,如果乙個欄位有索引,乙個字段沒有索引,將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num 10 or n...

資料庫優化總結

資料庫是web應用至關重要的乙個環節,其效能的優劣會影響整合web應用,所以需要對資料庫進化優化以提高使用效能。以下提供幾點方法作為參考。資料庫索引 資料庫建立索引後,以二叉樹的形式建立,大大縮減了查詢的時間 但是增加了增刪改的時間,每次更新資料,索引二叉樹都會重新調整 1 避免全表掃瞄,應考慮在 ...

資料庫優化 總結

一 表結構優化 設計表結構時,盡量考慮合理性 效能 二 sql語句優化 sql本身處理邏輯的優化,以及常用的語法優化 三 分割槽 相對於分表,分割槽對程式本身沒有任何影響。缺點 已存在的表無法追加分割槽,只能重建分割槽表,後將資料匯入 語法 在create table 時 cretae table ...