資料庫查詢提公升查詢效率

2021-09-23 06:00:15 字數 1609 閱讀 7429

在乙個千萬級別的資料庫查詢中,提公升查詢效率方法:

對查詢優化,要盡量避免全表掃瞄,首先考慮在whereorderby涉及的列上建索引

應盡量避免在where字句中對null值進行判斷,否則導致引擎放棄索引而進行全表掃瞄,如:select id from t where num is null,可以在num列上設定預設值為0,確保表中num列沒有null值,然後這樣查詢:select id from t where num=0

在使用索引字段作為條件時,如果是復合索引,盡可能的讓字段順序與索引順序一致

並不是所有索引對查詢都有效,當索引列有大量資料重複時,sql查詢可能不會去利用索引,如:表中有字段***,male和female幾乎各佔一半,那麼即使在***上建了索引也對查詢效率起不了作用

盡可能的使用varchar代替char,首先邊長字段儲存空間小,可以節省儲存空間,其次對於查詢來說,在相對較小的字段內搜尋效率高些

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

應盡量避免在where字句中使用or來連線條件,否則引擎將放棄索引而進行全表掃瞄,如:select id from t where num=10 or num=20 可以這樣查詢:select id from t where num=10 union all select id from t where num=20

in和 *** not in *** 也要慎用,否則會導致全表掃瞄,如:select id from t where num in (1,2,3) 對於連續的數值,能用between就不要用in了,如:select id from t where id between 1 and 3

下面的查詢也將導致全表掃瞄,如:select id from t where namelike『%何%』,若要提高效率,可以使用全文檢索

應盡量避免在where字句中對字段進行表示式進行操作,如:select id from t where num/2=100,可改為:select id from t where num=2*100

任何地方都不要用 select * from t,用具體的字段代替 *

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

where字句中使用引數,也會導致全表掃瞄,如:select id from t where num=@num,可以改為強制查詢使用索引:select id from t where with(index(索引名)) where num=@num

應盡量避免where字句中使用函式操作,否則引擎將放棄索引而進行全表掃瞄

提公升資料庫資料查詢效率

1.前言 隨著資訊科技的發展,資訊系統在企業中的應用也越來越廣泛,資訊系統在企業運營中扮演者十分重要的角色。可以說在資訊化如此廣泛的今天,企業資訊化是提公升企業運營效率的必經之路,資料是企業資產中必不可少的組成部分,資料組織效率的高低可能直接影響企業業務的進展,資料的安全則關係到整個企業的命運與興亡...

查詢資料庫效率問題

asp mssql,分頁部分。一種是使用記錄集實現分頁 set rs server.createobject adodb.recordset rs.open select from table conn,1,1 rs.pagesize 10 rs.absolutepage 1 另一種是直接使用sql...

資料庫優化查詢效率

1 儲存引擎選擇 如果資料表需要事務處理,應該考慮使用 innodb,因為它完全符合 acid 特性。如果不需要事務處理,使用預設儲存引擎 myisam 是比較明智的 2 分表分庫,主從。3 對查詢進行優化,要盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索 引 4...