成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于數據庫查詢性能調優和索引優化的總結

數據庫 SQL Server
本文我們主要對數據庫查詢性能調優和索引優化的知識進行了總結,了解這些知識有助于我們更好地提高SQL查詢的性能,希望能夠對您有所幫助。

數據庫查詢性能調優索引優化的知識是本文我們主要要介紹的內容,了解了這方面的知識有助于提高SQL查詢的效率,接下來我們開始介紹這部分內容。

查詢性能調優是個很大的話題,這里邊涉及到的技術非常廣泛,但是我們一般可以把它大致分為以下幾個層次:

1.減少數據訪問。相關的技術就是建立合適的索引,將全表掃描、索引掃描(scan)等耗時的操作轉化為索引查找(seek)。建立正確的索引,能讓數據庫查詢性能提升100-1000倍甚至更高,就好比一本非常厚的詞典,如果沒有任何索引,你要查一個東西,那可是相當費盡,需要整本書查一遍,有索引就可以直接根據索引定位了。這是最重要的改善性能的途徑。

2.減少返回的數據。在網絡中傳輸數據,帶寬是有限的,如果能按需提取最少量的數據,會起到不錯的作用。這里需要注意的是,在SQL中,不要出現select *,而是需要什么字段,就提取什么字段。

3.減少與數據庫交互次數。網絡資源有限,顯然,頻繁與數據庫交互,也是制約性能的一個因素。一個良好的建議就是,使用存儲過程,或者批處理語句,這樣能減少與數據庫的交互,提升一部分性能。

4.減少CPU的負荷。這里,主要是使用緩存計劃。在查詢中,盡量使用參數化的查詢。這樣的話,數據庫會對查詢參數進行緩存,從而復用查詢計劃。

5.提升硬件性能。這是***一招了,如果其他方面都已經做得非常不錯了,性能瓶頸在CPU,內存和磁盤上,那采取提升硬件性能的方案就會顯得比較合適了,否則還是先去優化其他的地方吧。

以上5個層次的優化帶來的性能改善,是依次下降的,是一個倒置的金字塔。

下邊詳細討論一下索引的知識。

百度百科上對索引的描述是:“數據庫索引是對數據庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問數據庫表中的特定信息。”

索引,分為聚集索引(clustered index)和非聚集索引(nonclustered index)兩種。

a.聚集索引

含有聚集索引的表,叫做聚集表,它的數據行的組織方式,是跟聚集索引的順序是一致的。聚集索引覆蓋的列,叫做聚集鍵。

用新華字典來比喻的話,正文的每一個字就是一個數據行,他們的組織順序是根據拼音,如果拼音相同,就會根據筆畫(不一定準確,見諒),因此,新華字典里的聚集索引覆蓋的列就是拼音和筆畫。

很容易理解的是,正文只能按照一種既定的順序去排序,同理,在一張表里,只能有一個聚集索引,從而決定著數據行的組織方式。

b.非聚集索引

非聚集索引,用新華字典來比喻的話,就是字典正文之前的那些按拼音查找,按部首查找,按筆畫查找的附錄。它們描述了正文中的文字的排序位置,但是他們跟正文是分開的。非聚集索引,它跟數據的組織順序是毫無關系的,它用一系列指針來指向數據行,從而來描述數據行的位置。

不含有聚集索引的表,叫做堆表,它的數據行組織順序,是沒有特定順序的,類似于一堆書,增加一本書就放在這堆書的上面(在堆表中,具體實現方式可能不一樣)。

聚集索引對查詢性能影響非常大。聚集表中,非聚集索引是根據聚集鍵來定位的,而堆表中,非聚集索引是根據數據行號來定位的。這將有很大的性能區別,前者的性能大大優于后者。所以,建立合適的聚集索引,是非常必要的。一個好的建議是,使用小字段的且值唯一的列來建立索引,而且***是單列,可以是代理鍵。因為如果字段太大太多,用來進行排序的開銷將會很大,得不償失;如果列值不唯一,數據庫會為該重復值附加4字節的信息來標識重復值,增加了不必要的開銷。

通常,我們在創建表的時候會指定主鍵,如果不顯式指定索引類型的話,將默認創建聚集索引。比如:add constraint pk_tbl primary key (sid),將創建以sid為序的聚集索引??梢燥@式指定主鍵上的索引類型,比如,add constraint pk_tbl primary key nonclustered (sid),將創建一個非聚集索引的主鍵。所以,在創建主鍵的時候,一定得小心了,有多主鍵的情況,要注意顯式指定索引類型。

索引能大幅度提高查詢和排序性能,但是,在插入,刪除,以及修改了主鍵的操作中,是需要維護索引順序的。如果一張頻繁變更的表,是不宜建立過多的索引的,索引帶來的負面性能影響,將會得不償失。

索引優化,是一個很考究的事情,它需要找到一個平衡點。

一般來說,有以下幾個建議來創建合適的索引:

1.超過300行的數據表要創建索引(無視掉)。

2.聚集索引字段不能過多,***是單字段,而且列值唯一。

3.對于數據字段特別多的表,而且這些字段有很多出現在where中,不宜在每一個字段上建立單獨的索引,而是創建組合索引。組合索引中,列的順序是很講究的,越是選擇性大而且唯一的列要放在前面,這對查詢優化器優化有很大的幫助。不宜在那些大量重復的列值上建立索引,比如在一個true,false的列上建索引,是毫無意義的。

4.如果查詢中,查詢的字段不多,可以考慮建立覆蓋索引,將字段都包含在索引里,可以僅僅訪問索引就能查詢到所有數據,而不用表掃描。

關于數據庫查詢性能調優和索引優化的知識就介紹到這里了,希望本次的介紹能夠對您有所幫助。

【編輯推薦】

  1. SQL Server鏈接服務器訪問DB2設置步驟圖解
  2. 初學SQL Server存儲過程的一些簡單操作示例
  3. T-SQL查詢中基于列的邏輯表達式的查詢詳解
  4. SQL Server實踐性練習之創建庫表及條件查詢
  5. SQL Server中通過設置SET NOCOUNT來優化存儲過程
責任編輯:趙鵬 來源: CSDN博客
相關推薦

2023-04-03 10:25:00

數據庫性能調優

2010-05-04 17:08:24

Oracle數據庫

2023-10-04 11:16:03

數據庫MySQL

2011-07-08 16:02:54

HBase

2023-11-10 09:25:36

Oracle數據庫

2011-04-18 13:12:01

數據庫索引

2013-05-21 10:06:11

數據庫查詢優化

2011-04-18 13:23:46

數據庫查詢

2010-04-07 13:32:39

Oracle調優

2021-01-31 17:50:41

數據庫查詢程序員

2016-12-12 13:07:57

數據庫優化SQL

2010-12-10 10:17:21

關系型數據庫

2019-08-13 08:32:14

MySQL數據庫性能調優

2023-07-12 08:55:16

PawSQL數據庫

2018-06-07 08:54:01

MySQL性能優化索引

2011-03-10 14:40:50

2022-05-10 10:02:51

openGauss性能調優數據庫

2011-04-25 09:12:47

LinuxIO數據庫

2019-07-08 14:05:53

數據庫JVMSQL

2023-09-11 08:38:38

Oracle數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美视频 亚洲视频 | 国产精品美女久久久 | 久久毛片 | 成人一区二区三区在线观看 | 国产女人精品视频 | 奇米视频777 | 91色在线视频 | 97免费视频在线观看 | 97caoporn国产免费人人 | 91社影院在线观看 | 91欧美激情一区二区三区成人 | 人妖无码 | 羞羞视频免费观 | 亚洲精品一区二区三区蜜桃久 | 日韩精品一区二区在线 | 国产精品免费视频一区 | 亚洲欧美一区二区三区视频 | 久久精品二区 | 午夜一级黄色片 | 草草草网站 | 亚洲国产精品久久 | 国产精品3区 | 亚洲欧洲在线观看视频 | 欧美成人一区二区三区 | 九九亚洲 | 午夜免费网站 | 欧美一区二区三区小说 | 欧美日韩国产精品 | 欧美多人在线 | 国产精品久久久久久高潮 | 日韩不卡视频在线观看 | 精品一区在线 | 看片91| 男人的天堂一级片 | 国产精品久久一区 | 最新日韩av | 日日天天 | 日韩不卡一区二区 | 老外黄色一级片 | 在线播放国产一区二区三区 | 综合自拍 |