亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

7、SQL Server索引、表壓縮

2024-08-31 00:54:07
字體:
來源:轉載
供稿:網友
7、SQL Server索引、表壓縮

索引

什么是索引?

索引是一種磁盤上的數據結構,建立在表或視圖的基礎上。使用索引可以使數據的獲取更快更高校,也會影響其他的一些性能,如插入或更新等。

索引主要分為兩種類型:聚集索引和非聚集索引。

字典的目錄就是一個索引,按照拼音查詢想要的字就是聚集索引(物理連續,頁碼與目錄一一對應),偏旁部首就是一個非聚集索引(邏輯連續,頁碼與目錄不連續)。

聚集索引存儲記錄是物理上連續存在的,而非聚集索引是邏輯上的連續,物理存儲并不連續。

聚集索引一個表中只能有一個,而非聚集索引一個表中可以有多個。

索引的利弊

使用索引是為了避免全表掃描,因為全表掃描是從磁盤上讀取表的每一個數據頁,如果有索引指向數據值,則只需要讀少次數的磁盤就可以。

帶索引的表在數據庫中占用更多的空間,同樣增、刪、改數據的命令所需時間會更長。

索引的存儲機制

書中的目錄是一個字詞以及所在的頁碼列表,數據庫中的索引是表中的值以及各值存儲位置的列表。

聚集索引是在數據庫中新開辟一個物理空間,用來存放他排列的值,當有新數據插入時,他會重新排列整個物理存儲空間。

非聚集索引只包含原表中的非聚集索引的列和指向實際物理表的一個指針。

數據表的基本結構

當一個新的數據表創建時,系統將在磁盤中分配一段以8k為單位的連續空間。當一個8k用完的時候,數據庫指針會自動分配一個8k的空間,每個8k的空間稱為一個數據頁,并分配從0-7的頁號,每個文件的第0頁記錄引導信息叫頁頭,每8個數據頁由64k組成形成擴展區。全部數據頁的組合形成堆。

SQLServer規定行不能跨越數據頁,所以每行記錄的最大數量只能是8k,這就是為什么char和varchar這兩種字符類型容量要限制在8k以內的原因,存儲超過8k的數據應使用text類型,其實text類型的字段值不能直接錄入和保存,它是存儲一個指針,指向由若干個8k的數據頁所組成的擴展區,真正的數據其實放在這些數據頁中。

什么情況下設置索引

1、定義主鍵的數據列(sql server默認會給主鍵一個聚集索引)。

2、定義有外鍵的數據列

3、對于經常查詢的數據列

4、對于需要在指定范圍內頻繁查詢的數據列

5、經常在where子句中出現的數據列

6、經常出現在關鍵字 order by、group by、distinct后面的字段。

什么情況下不要設置索引

1、查詢中很少涉及的列,重復值比較多的列。

2、text、image、bit數據類型的列

3、經常存取的列

4、經常更新操作的表,索引一般不要超過3個、最多不要5個。雖說提高了訪問速度,但會影響更新操作。

聚集索引

1、使用SSMS創建聚集索引

展開要創建索引的表->右擊索引->選擇新建索引->聚集索引->新建索引點添加->選擇列->選擇升序或降序->輸入名字->確定。

默認情況下,生成主鍵的同時將自動創建一個聚集索引。

2、使用T-SQL創建聚集索引

use webDBgocreate clustered index index_name /*聚集索引名*/on table_name(    id desc)with(drop_existing=on); /*如果存在則刪除*/

每張表或者視圖只能包含一個聚集索引,因為聚集索引改變了數據存儲與排列方式。無論是聚集還是非聚集索引,都將信息存儲在平衡樹或B-樹中,B-樹識別類似數據并將他們組合在一起,正是由于B-樹中的檢索基于鍵值,因此索引可以提升數據訪問的速度。B-樹將具有類似鍵的組合起來,所以數據庫引擎只需搜索少量頁面即可找到目標記錄。

非聚集索引

每張表上可以有多個非聚集索引,可以在某個列上創建一個索引,也可以在已經是現有索引組成部分的多列上創建索引。

SSMS創建方法同上,T-SQL創建方法如下:

use webDBgocreate nonclustered index fei /*聚集索引名*/on defualt(    hits desc)

添加索引選項

fillfactor:用于在創建索引時,每個索引頁的數據占索引大小的百分比,默認100.當需要頻繁修改表時,建議設置為70-80,不經常更新時建議90.

pad_index:用于索引中間級中每個頁上保持開放的空間。不能設置值,他的值繼承自fillfactor。

小例子

use webDBgocreate table ceshi --新建表(    id int identity(1,1) PRimary key,    name varchar(20),    code varchar(20),    [date] datetime)--插入10w條測試數據declare @n intset @n = 1while @n <100000beginInsert into ceshi (name,code,[date]) values ('name'+cast(@n as varchar(20)),'code'+cast(@n as varchar(20)),getutcdate())set @n=@n+1end--查看索引情況set statistics io on --查看磁盤ioset statistics time on --查看sql語句分析編譯和執行時間select * from ceshi--查看索引情況exec sp_helpindex ceshiselect * from ceshi where name = 'name1'--ctrl+l 查看執行計劃 聚集索引掃描開銷100%,考慮優化為索引查找,在name上建立非聚集索引--建立非聚集索引create index name_index on ceshi(    name)--再次查看索引情況 多出來新建的非聚集索引exec sp_helpindex ceshi--在運行上面的語句select * from ceshi where name = 'name1'--明顯發現速度變快了 , ctrl+l 發現聚集索引和非聚集索引各占50%

管理索引

exec sp_helpindex ceshi --查看該表中的索引exec sp_rename 'ceshi.name_index','new_name' --改名drop index ceshi.new_name --刪除索引dbcc showcontig(ceshi,new_name) --檢查碎片dbcc indexdefrag(webDB,ceshi,new_name) --整理碎片update statistics ceshi --更新表中所有索引的統計

表壓縮

SQLServer的主要性能取決于磁盤I/O效率,SQLServer 2008提供了數據壓縮功能來提高磁盤I/O效率。

表壓縮意味著減小數據的磁盤占有量,所以壓縮可以用在堆表、聚集索引的表、非聚集索引的表、索引視圖、分區表上。

可壓縮的數據類型

smallint、int、Bigint、decimal、numeric、real、float、money、smallmoeny、bit、datetime、datetime2、datetimeoffset、char、nchar、binary、rowversion。

SQLServer中有兩種壓縮類型:數據與備份

行壓縮

壓縮會改變數據的物理存儲方式,但不需要對代碼做任何修改。

行壓縮流程:首先識別表中每一列的數據類型,然后轉換為可變長度,最后將存儲空間的請求總量減少到實際需求量。

如:固定長度的類型int、char、nchar等,在數據頁中以不定長度的方式存儲(存儲真實數據長度)。

1、SSMS行壓縮

表->右鍵->存儲->管理壓縮->對所有分區使用相同壓縮類型->右側選擇row->立即執行->完成。

在壓縮堆表或聚集索引時并不同時包含非聚集索引,因此需要另外單獨對非聚集索引進行操作。

索引->右鍵->存儲->管理壓縮->對所有分區使用相同壓縮類型->右側選擇row->立即執行->完成。

2、T-SQL行壓縮

--在現有表進行壓縮--聚集alter table ceshi rebuild with(data_compression=row)--非聚集alter index new_name on ceshi rebuild with(data_compression=row) --在創建表時進行壓縮create table yasuo(    id int primary key,    name varchar(50),    mail varchar(50))with (data_compression=row)

創建時指定行壓縮方式,這時并未發生改變。只要數據插入表中,該行即被壓縮。

頁壓縮

頁壓縮通過執行額外的一些步驟增強了行壓縮的功能。

頁壓縮步驟:行壓縮、前綴壓縮、字典壓縮。

首先對于每一列將確定一個值,此值可以減少每一列中值的存儲空間。一旦確定該值后,每一列的前綴值的行將被存儲在頁頭中。所有的信息稱為壓縮信息,存儲在頁頭之下。標識的值(前綴值)位于沒列中,將由指向壓縮信息部分中對應值的引用進行替換。

下一步字典壓縮,搜索整個頁面而非單個列,重復值被移動到頁頭的壓縮信息部分,取而代之的是指向該值的引用。

在SSMS中頁壓縮步驟與行壓縮步驟一致,只是選擇壓縮方式為Page。T-SQL中將row改成page即可。

需要注意

1、如果保留在內存中的數據是壓縮的,一旦被選中,則必須先進行解壓縮。

2、在插入新行時,數據也是行或頁壓縮的。

3、當更新或刪除時,行壓縮對象保留當前的壓縮級別。但是頁壓縮可能需要重新計算,取決于發生變化的數據量。

用哪種壓縮

需要頻繁更新的對象應該使用行壓縮。

只是執行讀取操作的應該使用頁壓縮。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩毛片中文字幕| 国产999在线观看| 国产丝袜精品视频| 久久久这里只有精品视频| 亚洲激情视频在线播放| 中文字幕欧美专区| 亚洲日韩欧美视频一区| 亚洲欧洲国产一区| 国产69久久精品成人看| 亚洲国产古装精品网站| 欧美成人一二三| 亚洲欧洲一区二区三区在线观看| 欧美韩日一区二区| 最近的2019中文字幕免费一页| 精品国模在线视频| 九九九久久久久久| 97在线视频国产| 亚洲最大福利网站| 国产性色av一区二区| 亚洲天堂一区二区三区| 久久免费精品视频| 国产精品久久久久久久久| 中文字幕九色91在线| 久久好看免费视频| 国产在线日韩在线| 日韩www在线| 亚洲国产精品久久久久| 日韩av黄色在线观看| 在线免费看av不卡| 国语自产精品视频在线看| 国产成人精品一区二区三区| xx视频.9999.com| 日韩美女在线观看一区| 大胆欧美人体视频| 51ⅴ精品国产91久久久久久| 日韩经典中文字幕| 亚洲18私人小影院| 久久久久久久久久国产精品| 国产精品爽黄69| 国产精品小说在线| 精品日本高清在线播放| 九九久久综合网站| 隔壁老王国产在线精品| 亚洲www永久成人夜色| 亚洲一区亚洲二区| 日韩av免费看网站| 国产一区二区三区三区在线观看| 全亚洲最色的网站在线观看| 国产成人精品国内自产拍免费看| 精品久久久久久久久久国产| 亚洲香蕉av在线一区二区三区| 国产精品白嫩初高中害羞小美女| 91在线视频九色| 欧美电影免费观看网站| 尤物99国产成人精品视频| 国产成人精品综合久久久| 91免费的视频在线播放| 国产成人激情视频| 成人欧美一区二区三区在线| 久热国产精品视频| 国产精品网站大全| 欧美精品在线播放| 日韩美女av在线免费观看| 国产午夜精品视频| 欧美日韩午夜视频在线观看| 精品国产一区二区三区四区在线观看| 欧美日韩亚洲系列| 久久综合亚洲社区| 7m精品福利视频导航| 国产精品日日摸夜夜添夜夜av| 精品久久久久久久久久久久久久| 国产亚洲a∨片在线观看| 成人妇女免费播放久久久| 日韩亚洲国产中文字幕| 国语自产精品视频在线看抢先版图片| 国产成人久久久精品一区| 永久免费看mv网站入口亚洲| 亚洲免费一在线| 亚洲人成77777在线观看网| 国产精品稀缺呦系列在线| 欧美老女人性视频| 欧美日韩国产999| 亚洲香蕉成视频在线观看| 欧美黄色性视频| 国产成人精品一区| 国产日韩在线视频| 亚洲国产另类 国产精品国产免费| 国产高清在线不卡| 国产视频精品久久久| 国产精品久久不能| 亚洲美女性视频| 色偷偷av亚洲男人的天堂| 亚洲va欧美va国产综合久久| 欧洲成人在线观看| 日韩精品在线看| 91免费精品视频| 美乳少妇欧美精品| 日韩精品亚洲元码| 国产一区视频在线播放| 日韩精品在线免费播放| 国产一区二区三区久久精品| 中文字幕亚洲无线码在线一区| 日本精品久久久久久久| 国产精品成人一区二区| 欧美孕妇性xx| 北条麻妃在线一区二区| 国产精品视频播放| 欧美一级电影在线| 欧美日韩另类视频| 欧美性精品220| 成人精品在线观看| 国产欧美日韩精品在线观看| 成人精品在线观看| 国产suv精品一区二区三区88区| 91精品国产精品| 欧美日韩精品在线视频| 97精品国产97久久久久久| 亚洲白虎美女被爆操| 国产午夜一区二区| 疯狂做受xxxx高潮欧美日本| 亚洲国产精品99久久| 欧美精品在线观看| 亚洲伊人成综合成人网| 国产有码在线一区二区视频| 国语自产精品视频在免费| 美女少妇精品视频| 国产婷婷97碰碰久久人人蜜臀| 国产精品爱久久久久久久| 国产乱肥老妇国产一区二| 另类少妇人与禽zozz0性伦| 亚洲娇小xxxx欧美娇小| 欧美电影在线免费观看网站| 国产精品99久久久久久久久| 日韩精品在线视频| 国产一区二区三区中文| 久久久久久久国产精品视频| 亚洲va欧美va国产综合剧情| 一区二区三区在线播放欧美| 国产乱人伦真实精品视频| 欧美精品在线看| 国产精品一区二区三区免费视频| 国产精品白嫩初高中害羞小美女| 国产精品狼人色视频一区| 欧美性一区二区三区| 91在线视频精品| 91精品国产91久久久久久| 91中文字幕在线| 日韩成人久久久| 亚洲成人网在线观看| 国产精品扒开腿做爽爽爽男男| 日韩精品在线第一页| 亚洲网站在线播放| 国产精品久久久久久久久久小说| 久久久综合免费视频| 成人h视频在线| 亚洲一区亚洲二区亚洲三区| 国产精品91在线| 91久久精品在线| 91精品中文在线| 精品无码久久久久久国产| 美女国内精品自产拍在线播放| 日韩av在线资源| 欧美一级视频免费在线观看| 国产一级揄自揄精品视频|