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 wheresubstring(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 fromb) --
改為:
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 ...