如何提高資料庫查詢效率

2022-05-31 15:03:09 字數 1832 閱讀 2392

2017-02-15

目錄

1 硬體調整效能

2 資料庫設計方面

2.1 建立索引

2.2 字段型別

2.3 表變數和臨時表

3 sql語句方面

3.1 避免全表掃瞄

3.2 只取需要的字段和行

3.3 盡量避免使用游標

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

3.5 使用儲存過程

在乙個千萬級的資料庫查尋中,如何提高查詢效率?

返回最有可能影響效能的是磁碟和網路吞吐量,解決辦法擴大虛擬記憶體,並保證有足夠可以擴充的空間;把sql資料庫伺服器的吞吐量調為最大

返回sql索引有兩種,聚集索引和非聚集索引(聚簇索引與非聚簇索引的區別)。聚集索引 表資料按照索引的順序來儲存的,而非聚集索引 表資料儲存順序與索引順序無關。

動作描述

使用聚集索引 

使用非聚集索引

外來鍵列應

應主鍵列應應

列經常被分組排序(order by)應應

返回某範圍內的資料應不應

小數目的不同值應不應

大數目的不同值不應應

頻繁更新的列

不應 應

頻繁修改索引列不應應

乙個或極少不同值

不應不應

返回

select id from t where num=

10or num=

20--

改為select id from t where num=

10union

allselect id from t where num=

20

select id from t where num in(1,2,3)--

改為select id from t where num between

1and

3

select id from t where name like 『%abc%』

select id from t where num=

@num

--可以改為強制查詢使用索引:

select id from t with(index(索引名)) where num=

@num

select id from t where num/2=

100--

應改為:

select id from t where num=

100*

2

select id from t where

substring(name,1,3)=

』abc』

--改為

select id from t where name like 『abc%

』 select id from t where

datediff(day,createdate,』2005-11

-30′)=

0–『2005-11

-30』--

改為select id from t where createdate>=』2005-11

-30′ and createdate<』2005-12

-1′

select num from a where num in(select num from

b) --

改為:

select num from a where

exists(select

1from b where num=a.num)

oracle資料庫,提高查詢效率

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

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

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

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

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