偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

提高SQL Server數(shù)據(jù)處理效率用可用索引

數(shù)據(jù)庫(kù) SQL Server
我們今天主要向大家描述的是正確使用索引來(lái)對(duì)SQL Server數(shù)據(jù)處理效率進(jìn)行提高的實(shí)際操作流程,以下就是文章的主要內(nèi)容描述。

以下的文化在那個(gè)主要向大家愛(ài)講述的是正確使用索引來(lái)對(duì)SQL Server數(shù)據(jù)處理效率進(jìn)行提高的實(shí)際操作步驟,在實(shí)際操作中良好的數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)上,我們能有效地使用索引是SQL Server取得高性能的基礎(chǔ)。

SQL Server采用基于代價(jià)的優(yōu)化模型,它對(duì)每一個(gè)提交的有關(guān)表的查詢(xún),決定是否使用索引或用哪一個(gè)索引。

因?yàn)椴樵?xún)執(zhí)行的大部分開(kāi)銷(xiāo)是磁盤(pán)I/O,使用索引提高性能的一個(gè)主要目標(biāo)是避免全表掃描,因?yàn)槿頀呙栊枰獜拇疟P(pán)上讀表的每一個(gè)數(shù)據(jù)頁(yè),如果有索引指向數(shù)據(jù)值,則查詢(xún)只需讀幾次磁盤(pán)就可以了。所以如果建立了合理的索引,優(yōu)化器就能利用索引提高SQL Server數(shù)據(jù)處理的效率加速數(shù)據(jù)的查詢(xún)過(guò)程。

但是,索引并不總是提高系統(tǒng)的性能,在增、刪、改操作中索引的存在會(huì)增加一定的工作量,因此,在適當(dāng)?shù)牡胤皆黾舆m當(dāng)?shù)乃饕牟缓侠淼牡胤絼h除次優(yōu)的索引,將有助于優(yōu)化那些性能較差的SQL Server應(yīng)用。

實(shí)踐表明,合理的索引設(shè)計(jì)是建立在對(duì)各種查詢(xún)的分析和預(yù)測(cè)上的,只有正確地使索引與程序結(jié)合起來(lái),才能產(chǎn)生最佳的優(yōu)化方案。本文就SQL Server索引的性能問(wèn)題進(jìn)行了一些分析和實(shí)踐。

一、聚簇索引(clustered indexes)的使用

聚簇索引是一種對(duì)磁盤(pán)上實(shí)際數(shù)據(jù)重新組織以按指定的一個(gè)或多個(gè)列的值排序。由于聚簇索引的索引頁(yè)面指針指向數(shù)據(jù)頁(yè)面,所以使用聚簇索引查找數(shù)據(jù)幾乎總是比使用非聚簇索引快。每張表只能建一個(gè)聚簇索引,并且建聚簇索引需要至少相當(dāng)該表120%的附加空間,以存放該表的副本和索引中間頁(yè)。建立聚簇索引的思想是:

1、大多數(shù)表都應(yīng)該有聚簇索引或使用分區(qū)來(lái)降低對(duì)表尾頁(yè)的競(jìng)爭(zhēng),在一個(gè)高事務(wù)的環(huán)境中,對(duì)最后一頁(yè)的封鎖嚴(yán)重影響系統(tǒng)的吞吐量。

2、在聚簇索引下,數(shù)據(jù)在物理上按順序排在數(shù)據(jù)頁(yè)上,重復(fù)值也排在一起,因而在那些包含范圍檢查(between、<、<=、>、>=)或使用group by或order by的查詢(xún)時(shí),一旦找到具有范圍中第一個(gè)鍵值的行,具有后續(xù)索引提高SQL Server數(shù)據(jù)處理的效率值的行保證物理上毗連在一起而不必進(jìn)一步搜索,避免了大范圍掃描,可以大大提高查詢(xún)速度。

3、在一個(gè)頻繁發(fā)生插入操作的表上建立聚簇索引時(shí),不要建在具有單調(diào)上升值的列(如IDENTITY)上,否則會(huì)經(jīng)常引起封鎖沖突。

4、在聚簇索引中不要包含經(jīng)常修改的列,因?yàn)榇a值修改后,數(shù)據(jù)行必須移動(dòng)到新的位置。

5、選擇聚簇索引應(yīng)基于where子句和連接操作的類(lèi)型。

聚簇索引的侯選列是:

1、主鍵列,該列在where子句中使用并且插入是隨機(jī)的。

2、按范圍存取的列,如pri_order > 100 and pri_order < 200。

3、在group by或order by中使用的列。

4、不經(jīng)常修改的列。

5、在連接操作中使用的列。

二、非聚簇索引(nonclustered indexes)的使用

SQL Server缺省情況下建立的索引是非聚簇索引,由于非聚簇索引不重新組織表中的數(shù)據(jù),而是對(duì)每一行存儲(chǔ)索引提高SQL Server數(shù)據(jù)處理的效率列值并用一個(gè)指針指向數(shù)據(jù)所在的頁(yè)面。換句話(huà)說(shuō)非聚簇索引具有在索引結(jié)構(gòu)和數(shù)據(jù)本身之間的一個(gè)額外級(jí)。一個(gè)表如果沒(méi)有聚簇索引時(shí),可有250個(gè)非聚簇索引。

每個(gè)非聚簇索引提供訪(fǎng)問(wèn)數(shù)據(jù)的不同排序順序。在建立非聚簇索引時(shí),要權(quán)衡索引對(duì)查詢(xún)速度的加快與降低修改速度之間的利弊。另外,還要考慮這些問(wèn)題:

1、索引需要使用多少空間。

2、合適的列是否穩(wěn)定。

3、索引鍵是如何選擇的,掃描效果是否更佳。

4、是否有許多重復(fù)值。

對(duì)更新頻繁的表來(lái)說(shuō),表上的非聚簇索引比聚簇索引和根本沒(méi)有索引需要更多的額外開(kāi)銷(xiāo)。對(duì)移到新頁(yè)的每一行而言,指向該數(shù)據(jù)的每個(gè)非聚簇索引的頁(yè)級(jí)行也必須更新,有時(shí)可能還需要索引頁(yè)的分理。從一個(gè)頁(yè)面刪除數(shù)據(jù)的進(jìn)程也會(huì)有類(lèi)似的開(kāi)銷(xiāo),另外,刪除進(jìn)程還必須把數(shù)據(jù)移到頁(yè)面上部,以保證數(shù)據(jù)的連續(xù)性。所以,建立非聚簇索引要非常慎重。非聚簇索引常被用在以下情況:

1、某列常用于集合函數(shù)(如Sum,....)。

2、某列常用于join,order by,group by。

3、查尋出的數(shù)據(jù)不超過(guò)表中數(shù)據(jù)量的20%。

三、覆蓋索引(covering indexes)的使用

覆蓋索引是指那些索引項(xiàng)中包含查尋所需要的全部信息的非聚簇索引,這種索引提高SQL Server數(shù)據(jù)處理的效率之所以比較快也正是因?yàn)樗饕?yè)中包含了查尋所必須的數(shù)據(jù),不需去訪(fǎng)問(wèn)數(shù)據(jù)頁(yè)。如果非聚簇索引中包含結(jié)果數(shù)據(jù),那么它的查詢(xún)速度將快于聚簇索引。

但是由于覆蓋索引的索引項(xiàng)比較多,要占用比較大的空間。而且update操作會(huì)引起索引值改變。所以如果潛在的覆蓋查詢(xún)并不常用或不太關(guān)鍵,則覆蓋索引的增加反而會(huì)降低性能。

【編輯推薦】

  1. 實(shí)現(xiàn)SQL Server數(shù)據(jù)備份可用觸發(fā)器
  2. SQL Server磁帶備份設(shè)備的性能優(yōu)化過(guò)程
  3. SQL Server 2008數(shù)據(jù)庫(kù)在實(shí)際應(yīng)用中的獨(dú)到之處
  4. SQL Server 2000數(shù)據(jù)庫(kù)備份和還原的示例
  5. SQL Server 2005商業(yè)智能功能淺析
     
責(zé)任編輯:佚名 來(lái)源: 中信出版社
相關(guān)推薦

2010-06-30 13:49:02

SQL Server數(shù)

2010-07-08 17:28:02

2010-05-26 08:47:00

索引SQL Server

2024-12-03 09:28:54

元組數(shù)據(jù)庫(kù)

2011-09-01 15:12:43

SQL ServerHadoop

2009-04-16 15:34:35

SQL Server

2010-11-12 11:25:44

SQL SERVER視

2022-05-24 09:52:37

Spark SQL大數(shù)據(jù)處理Hive

2010-07-15 15:42:38

2010-09-07 10:26:37

SQL語(yǔ)句

2011-04-02 13:37:05

SQL Server 索引視圖

2011-04-01 15:36:24

索引SQL Server

2025-01-07 13:58:08

SQL數(shù)據(jù)處理函數(shù)數(shù)據(jù)庫(kù)

2010-04-07 17:45:22

Oracle位圖索引

2011-07-27 17:22:10

mysql極限測(cè)試索引

2010-10-25 10:55:11

Oracle函數(shù)索引

2011-08-19 13:28:25

海量數(shù)據(jù)索引優(yōu)化

2013-10-29 10:36:34

2024-04-01 12:33:19

PyCudaGPUPython

2025-03-11 14:09:04

點(diǎn)贊
收藏

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