提高資料庫查詢效率的簡單常用方法

2021-06-01 17:51:53 字數 1113 閱讀 6596

1、 where子句中條件的順序對效能沒有影響,注意,額外說一下,這裡只是說條件的順序,不包含表的順序。在rbo優化器模式下,表應按結果記錄數從大到小的順序從左到右來排列,因為表間連線時,最右邊的表會被放到巢狀迴圈的最外層。最外層的迴圈次數越少,效率越高。

2、盡量避免大事務操作,提高系統併發能力。

3、盡量使用表變數來代替臨時表。如果表變數包含大量資料,請注意索引非常有限(只有主鍵索引)

4、任何地方都不要使用 select * from jl,用具體的字段列表代替「*」,不要返回用不到的任何字段。 

5、盡量使用數字型字段,若只含數值資訊的字段盡量不要設計為字元型,這會降低查詢和連線的效能,並會增加儲存開銷。這是因為引擎在處理查詢和連線時會逐個比較字串中每乙個字元,而對於數字型而言只需要比較一次就夠了。

6、應盡可能的避免更新 clustered 索引資料列,因為 clustered 索引資料列的順序就是表記錄的物理儲存順序,一旦該列值改變將導致整個表記錄的順序的調整,會耗費相當大的資源。若應用系統需要頻繁更新 clustered 索引資料列,那麼需要考慮是否應將該索引建為 clustered 索引。

7、索引並不是越多越好,索引固然可以提高相應的 select 的效率,但同時也降低了 insert 及 update 的效率,因為 insert 或 update 時有可能會重建索引,所以怎樣建索引需要慎重考慮,視具體情況而定。乙個表的索引數最好不要超過6個,若太多則應考慮一些不常使用到的列上建的索引是否有必要。 

8、 很多時候用 exists 代替 in 是乙個好的選擇

9、不要在 where 子句中的「=」左邊進行函式、算術運算或其他表示式運算,否則系統將可能無法正確使用索引。

應盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃瞄。

應盡量避免在 where 子句中使用 or 來連線條件,否則將導致引擎放棄使用索引而進行全表掃瞄,可以使用union all

n 和 not in 也要慎用,否則會導致全表掃瞄,

對於連續的數值,能用 between 就不要用 in 了: 

下面的查詢也將導致全表掃瞄: 

select id from stu where name like '%abc%' 

若要提高效率,可以考慮全文檢索。

oracle資料庫,提高查詢效率

1.from子句 oracle的解析器按照從右到左的順序處理from子句中的表名,因此from子句中寫在最後的表 基礎表 driving table 將被最先處理。在from子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表。例如 t1 400w資料,t2 40資料 from t1,t2...

如何提高資料庫查詢效率

2017 02 15 目錄 1 硬體調整效能 2 資料庫設計方面 2.1 建立索引 2.2 字段型別 2.3 表變數和臨時表 3 sql語句方面 3.1 避免全表掃瞄 3.2 只取需要的字段和行 3.3 盡量避免使用游標 3.4 盡量避免大事務操作,提高系統併發能力 3.5 使用儲存過程 在乙個千萬...

如何從資料庫設計方面提高資料庫查詢效率

可以從以下多個方面優化資料庫設計提高資料庫查詢效率 a.對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。b.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如 select id from...