首頁技術文章正文

怎樣優(yōu)化數(shù)據(jù)庫查詢?

更新時間:2021-05-11 來源:黑馬程序員 瀏覽量:

1577370495235_學IT就到黑馬程序員.gif


數(shù)據(jù)庫優(yōu)化查詢可以在查詢語句、索引、使用臨時表等方面進行操作,具體如下:
(1)對查詢進行優(yōu)化,應盡量避免全表掃描,應先考慮在 where 或 order by 涉及的列上建立索引。
(2)應盡量避免在 where 子句中對字段進行 null 值判斷。
(3)并非所有索引對查詢都有效,SQL是根據(jù)表中數(shù)據(jù)來進行查詢優(yōu)化的,當索引列有大量數(shù)據(jù)重復時,查詢可能不會去利用索引。
(4)索引并不是越多越好,索引固然可以提高相應的 select 的效率,但同時也降低了 insert 及 update 的效率,因為 insert 或 update 時有可能會重建索引,所以怎樣建索引需要慎重考慮,視具體情況而定。一個表的索引數(shù)最好不要超過6個,若太多則應考慮一些不常使用到的列上建的索引是否有必要。
(5)應盡可能的避免更新索引數(shù)據(jù)列,因為索引數(shù)據(jù)列的順序就是表記錄的物理存儲順序,一旦該列值改變將導致整個表記錄的順序的調整,會耗費相當大的資源。若應用系統(tǒng)需要頻繁更新索引數(shù)據(jù)列,那么需要考慮是否應將該索引建為索引。
(6)盡量使用數(shù)字型字段,若只含數(shù)值信息的字段盡量不要設計為字符型,這會降低查詢和連接的性能,并會增加存儲開銷。這是因為引擎在處理查詢和連接時會逐個比較字符串中每一個字符,而對于數(shù)字型而言只需要比較一次就夠了。
(7)盡可能的使用 varchar/nvarchar 代替 char/nchar ,因為變長字段存儲空間小,可以節(jié)省存儲空間,其次對于查詢來說,在一個相對較小的字段內搜索效率顯然要高些。

優(yōu)化查詢.jpg

(8)避免頻繁創(chuàng)建和刪除臨時表,以減少系統(tǒng)表資源的消耗。
(9)臨時表并不是不可使用,適當?shù)厥褂盟鼈兛梢允鼓承├谈行В?,當需要重復引用大型表或常用表中的某個數(shù)據(jù)集時。但是,對于一次性事件,最好使用導出表。
(10)在新建臨時表時,如果一次性插入數(shù)據(jù)量很大,那么可以使用 select into 代替 create table,避免造成大量 log ,以提高速度;如果數(shù)據(jù)量不大,為了緩和系統(tǒng)表的資源,應先create table,然后insert。
(11)如果使用到了臨時表,在存儲過程的最后務必將所有的臨時表顯式刪除,先 truncate table ,然后 drop table ,這樣可以避免系統(tǒng)表的較長時間鎖定。





   

猜你喜歡:

MyBatis框架如何實現(xiàn)數(shù)據(jù)查詢?有幾種方法?

數(shù)據(jù)庫優(yōu)化的幾種方式詳細介紹

Python開發(fā)面試題目:如何優(yōu)化數(shù)據(jù)庫?    

黑馬程序員Python+大數(shù)據(jù)開發(fā)課程

分享到:
在線咨詢 我要報名
和我們在線交談!