自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于數(shù)據(jù)庫(kù)查詢(xún)性能調(diào)優(yōu)和索引優(yōu)化的總結(jié)

數(shù)據(jù)庫(kù) SQL Server
本文我們主要對(duì)數(shù)據(jù)庫(kù)查詢(xún)性能調(diào)優(yōu)和索引優(yōu)化的知識(shí)進(jìn)行了總結(jié),了解這些知識(shí)有助于我們更好地提高SQL查詢(xún)的性能,希望能夠?qū)δ兴鶐椭?/div>

數(shù)據(jù)庫(kù)查詢(xún)性能調(diào)優(yōu)索引優(yōu)化的知識(shí)是本文我們主要要介紹的內(nèi)容,了解了這方面的知識(shí)有助于提高SQL查詢(xún)的效率,接下來(lái)我們開(kāi)始介紹這部分內(nèi)容。

查詢(xún)性能調(diào)優(yōu)是個(gè)很大的話(huà)題,這里邊涉及到的技術(shù)非常廣泛,但是我們一般可以把它大致分為以下幾個(gè)層次:

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

2.減少返回的數(shù)據(jù)。在網(wǎng)絡(luò)中傳輸數(shù)據(jù),帶寬是有限的,如果能按需提取最少量的數(shù)據(jù),會(huì)起到不錯(cuò)的作用。這里需要注意的是,在SQL中,不要出現(xiàn)select *,而是需要什么字段,就提取什么字段。

3.減少與數(shù)據(jù)庫(kù)交互次數(shù)。網(wǎng)絡(luò)資源有限,顯然,頻繁與數(shù)據(jù)庫(kù)交互,也是制約性能的一個(gè)因素。一個(gè)良好的建議就是,使用存儲(chǔ)過(guò)程,或者批處理語(yǔ)句,這樣能減少與數(shù)據(jù)庫(kù)的交互,提升一部分性能。

4.減少CPU的負(fù)荷。這里,主要是使用緩存計(jì)劃。在查詢(xún)中,盡量使用參數(shù)化的查詢(xún)。這樣的話(huà),數(shù)據(jù)庫(kù)會(huì)對(duì)查詢(xún)參數(shù)進(jìn)行緩存,從而復(fù)用查詢(xún)計(jì)劃。

5.提升硬件性能。這是***一招了,如果其他方面都已經(jīng)做得非常不錯(cuò)了,性能瓶頸在CPU,內(nèi)存和磁盤(pán)上,那采取提升硬件性能的方案就會(huì)顯得比較合適了,否則還是先去優(yōu)化其他的地方吧。

以上5個(gè)層次的優(yōu)化帶來(lái)的性能改善,是依次下降的,是一個(gè)倒置的金字塔。

下邊詳細(xì)討論一下索引的知識(shí)。

百度百科上對(duì)索引的描述是:“數(shù)據(jù)庫(kù)索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),使用索引可快速訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)表中的特定信息。”

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

a.聚集索引

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

用新華字典來(lái)比喻的話(huà),正文的每一個(gè)字就是一個(gè)數(shù)據(jù)行,他們的組織順序是根據(jù)拼音,如果拼音相同,就會(huì)根據(jù)筆畫(huà)(不一定準(zhǔn)確,見(jiàn)諒),因此,新華字典里的聚集索引覆蓋的列就是拼音和筆畫(huà)。

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

b.非聚集索引

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

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

聚集索引對(duì)查詢(xún)性能影響非常大。聚集表中,非聚集索引是根據(jù)聚集鍵來(lái)定位的,而堆表中,非聚集索引是根據(jù)數(shù)據(jù)行號(hào)來(lái)定位的。這將有很大的性能區(qū)別,前者的性能大大優(yōu)于后者。所以,建立合適的聚集索引,是非常必要的。一個(gè)好的建議是,使用小字段的且值唯一的列來(lái)建立索引,而且***是單列,可以是代理鍵。因?yàn)槿绻侄翁筇?,用?lái)進(jìn)行排序的開(kāi)銷(xiāo)將會(huì)很大,得不償失;如果列值不唯一,數(shù)據(jù)庫(kù)會(huì)為該重復(fù)值附加4字節(jié)的信息來(lái)標(biāo)識(shí)重復(fù)值,增加了不必要的開(kāi)銷(xiāo)。

通常,我們?cè)趧?chuàng)建表的時(shí)候會(huì)指定主鍵,如果不顯式指定索引類(lèi)型的話(huà),將默認(rèn)創(chuàng)建聚集索引。比如:add constraint pk_tbl primary key (sid),將創(chuàng)建以sid為序的聚集索引。可以顯式指定主鍵上的索引類(lèi)型,比如,add constraint pk_tbl primary key nonclustered (sid),將創(chuàng)建一個(gè)非聚集索引的主鍵。所以,在創(chuàng)建主鍵的時(shí)候,一定得小心了,有多主鍵的情況,要注意顯式指定索引類(lèi)型。

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

索引優(yōu)化,是一個(gè)很考究的事情,它需要找到一個(gè)平衡點(diǎn)。

一般來(lái)說(shuō),有以下幾個(gè)建議來(lái)創(chuàng)建合適的索引:

1.超過(guò)300行的數(shù)據(jù)表要?jiǎng)?chuàng)建索引(無(wú)視掉)。

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

3.對(duì)于數(shù)據(jù)字段特別多的表,而且這些字段有很多出現(xiàn)在where中,不宜在每一個(gè)字段上建立單獨(dú)的索引,而是創(chuàng)建組合索引。組合索引中,列的順序是很講究的,越是選擇性大而且唯一的列要放在前面,這對(duì)查詢(xún)優(yōu)化器優(yōu)化有很大的幫助。不宜在那些大量重復(fù)的列值上建立索引,比如在一個(gè)true,false的列上建索引,是毫無(wú)意義的。

4.如果查詢(xún)中,查詢(xún)的字段不多,可以考慮建立覆蓋索引,將字段都包含在索引里,可以?xún)H僅訪(fǎng)問(wèn)索引就能查詢(xún)到所有數(shù)據(jù),而不用表掃描。

關(guān)于數(shù)據(jù)庫(kù)查詢(xún)性能調(diào)優(yōu)和索引優(yōu)化的知識(shí)就介紹到這里了,希望本次的介紹能夠?qū)δ兴鶐椭?/p>

【編輯推薦】

  1. SQL Server鏈接服務(wù)器訪(fǎng)問(wèn)DB2設(shè)置步驟圖解
  2. 初學(xué)SQL Server存儲(chǔ)過(guò)程的一些簡(jiǎn)單操作示例
  3. T-SQL查詢(xún)中基于列的邏輯表達(dá)式的查詢(xún)?cè)斀?/font>
  4. SQL Server實(shí)踐性練習(xí)之創(chuàng)建庫(kù)表及條件查詢(xún)
  5. SQL Server中通過(guò)設(shè)置SET NOCOUNT來(lái)優(yōu)化存儲(chǔ)過(guò)程
責(zé)任編輯:趙鵬 來(lái)源: CSDN博客
相關(guān)推薦

2023-04-03 10:25:00

數(shù)據(jù)庫(kù)性能調(diào)優(yōu)

2010-05-04 17:08:24

Oracle數(shù)據(jù)庫(kù)

2023-10-04 11:16:03

數(shù)據(jù)庫(kù)MySQL

2011-07-08 16:02:54

HBase

2023-11-10 09:25:36

Oracle數(shù)據(jù)庫(kù)

2011-04-18 13:12:01

數(shù)據(jù)庫(kù)索引

2013-05-21 10:06:11

數(shù)據(jù)庫(kù)查詢(xún)優(yōu)化

2011-04-18 13:23:46

數(shù)據(jù)庫(kù)查詢(xún)

2016-12-12 13:07:57

數(shù)據(jù)庫(kù)優(yōu)化SQL

2010-04-07 13:32:39

Oracle調(diào)優(yōu)

2021-01-31 17:50:41

數(shù)據(jù)庫(kù)查詢(xún)程序員

2019-08-13 08:32:14

MySQL數(shù)據(jù)庫(kù)性能調(diào)優(yōu)

2018-06-07 08:54:01

MySQL性能優(yōu)化索引

2010-12-10 10:17:21

關(guān)系型數(shù)據(jù)庫(kù)

2023-07-12 08:55:16

PawSQL數(shù)據(jù)庫(kù)

2011-03-10 14:40:50

2022-05-10 10:02:51

openGauss性能調(diào)優(yōu)數(shù)據(jù)庫(kù)

2011-04-25 09:12:47

LinuxIO數(shù)據(jù)庫(kù)

2019-07-08 14:05:53

數(shù)據(jù)庫(kù)JVMSQL

2023-09-11 08:38:38

Oracle數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)