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

首頁 > 學院 > 開發設計 > 正文

大話程序猿眼中的聚集索引和非聚集索引

2019-11-14 16:05:09
字體:
來源:轉載
供稿:網友

 

    OS:這里對聚集所以和非聚集所以的概念說明就不敘述了。
    身為程序猿,在平時的開發中,數據的操作是經常要做的事情,大多數公司是沒有DBA的,程序開發人員的在操作數據的時候根本不會去看SQL語句執行的效率,所以就時常的遇到大數據的情況下查詢數據庫總會遇到各種緩慢Loading的情況。
    從用戶的角度來說,我褲子都脫了,你給我看這個?
    從技術的角度來說,我他么這么流弊,怎么可以讓查詢這么卡。
    因此,作為程序猿的我們,在沒有DBA的情況下,要掌握最基本的加快數據庫查詢的意識和技能;
    
    直接上實例,動態說明,有圖有真相,簡單粗暴。
    這里我們先創建一張表:   
    
 CREATE TABLE [dbo].[Student](
 [ID] [INT] IDENTITY(1,1) NOT NULL,
 [Name] [NVARCHAR](50) NOT NULL,
 [Age] [INT] NOT NULL,
 [Height] [INT] NOT NULL,
 [Address] [NVARCHAR](100) NULL,
 [Class] [NVARCHAR](50) NOT NULL,
 [EntranceDateTime] [DATETIME] NOT NULL,
 CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED
(
 [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
 
GO
 
ALTER TABLE [dbo].[Student] ADD CONSTRAINT [DF_Student_EntranceDateTime] DEFAULT (GETDATE()) FOR [EntranceDateTime]
GO

  往表里插入 500萬數據:

 
DECLARE @i INT;
SET @i=1;
WHILE(@i<5000001)BEGIN
 
INSERT INTO dbo.Student(Name,Age,Height,[Address],Class,EntranceDateTime)
VALUES('yang_'+CONVERT(NVARCHAR(10),@i),RAND()*10+7,RAND()*100+50,'廈門土豪小區1座'+CONVERT(NVARCHAR(10),CONVERT(INT,RAND()*100+1))+'號',CONVERT(NVARCHAR(10),CONVERT(INT,RAND()*6+1))+'年級',GETDATE())
SET @i=@i+1;
END
 
1.合理的使用索引提高查詢速度
        查詢表里,所有年齡為10的名字,如圖:
 
從圖中可以看出,使用了聚集索引掃描,邏輯讀取55057次
 
 
添加索引:
CREATE NONCLUSTERED INDEX [IX_Student_Age_Name] ON [dbo].[Student]
(
 [Age] ASC
)
INCLUDE ( [Name]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO 、
 
 
很明顯的看出來,查詢優化器使用了索引查找,邏輯讀取次數變少為:2411,很可觀。
(在執行計劃中看到索引查找,就是說明索引被使用到了,如果出現索引掃描就說明索引沒有被使用到)
這里注意:
    誤區:我添加了索引查詢速度就一定比表掃描來得快,并且索引一定會被使用
    我的總結理解:一,索引不一定比掃描快,在數據量少的情況下,使用表掃描會比索引來得快,二,添加了索引不一定會被使用,首先要知道sqlserver在執行語句的時候會選擇最優耗能少的方案去執行,在索引無法達到最高效的情況下,就不會被使用到。
比如:
        下面的查詢操作,就沒有使用到索引了,而是使用到了聚集索引掃描
     
  
       出現上面的情況是為什么呢?
       因為我創建的索引里,只有覆蓋了Name字段,現在我查詢的是Address字段,不在索引的覆蓋中,那么查詢優化器在執行語句的時候就沒有使用到了索引,選擇了開銷更小的聚集索引掃描
        
        但是我就是這么任性,要強制要求使用索引來查詢,結果如截圖: 
 
      這個結果就很明顯了,邏輯讀次數,和掃描次數多了很多。計劃里也給了提示,讓我們索引覆蓋Address字段
2.合理的使用聚集索引
    我們在添加表的主鍵的時候就會默認的將主鍵添加為聚集索引,但是并不是聚集索引就一定要是主鍵字段,一張表就只能添加一個聚集索引,所以合理的利用聚集索引的特性,可以很大的提高查詢速度。
    一般我們都是在自增的ID設置為主鍵,但是又很少會對ID進行查詢操作,更多的會對表中的其他字段進行查詢,比如:時間字段。
    這個時候就可以將聚集索引加到時間字段里,你會發現整個查詢就會高效很多。
 
3,4,5,6
未完待續。。。
 
-----------------------------------[我只是美麗的分割線]-----------------------------------------
索引的優缺點
    優點: 加快訪問速度, 加強行的唯一性
    缺點: 帶索引的表在數據庫中需要更多的存儲空間,操縱數據的命令需要更長的處理時間,因為它們需要對索引進行更新
 
創建索引的指導原則
請按照下列標準選擇建立索引的列:
        該列用于頻繁搜索
        該列用于對數據進行排序
請不要使用下面的列創建索引:
        列中僅包含幾個不同的值。
        表中僅包含幾行。為小型表創建索引可能不太劃算,因為SQL Server在索引中搜索數據所花的時間比在表中逐行搜索所花的時間更長
 
 
假設我們在Col1列上創建了單列索引,可以在以下謂詞上進行索引查找:
 
Ø [Col1] = 3.14
 
Ø [Col1] > 100
 
Ø [Col1] BETWEEN 0 AND 99
 
Ø [Col1] LIKE 'abc%'
 
Ø [Col1] IN (2, 3, 5, 7)
 
然而,在以下謂詞上將不能使用索引查找:
 
Ø ABS([Col1]) = 1
 
Ø [Col1] + 1 = 9
 
Ø [Col1] LIKE '%abc'
-----------------------------------[我只是美麗的分割線]-----------------------------------------

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性xxxx极品高清hd直播| 国产噜噜噜噜久久久久久久久| 亚洲天堂第一页| 亚洲精品xxx| 亚洲综合av影视| 久久亚洲一区二区三区四区五区高| 国产精品一区二区三区在线播放| 国产午夜精品久久久| 欧美小视频在线| 欧美精品成人在线| 亚洲图片欧洲图片av| 国产视频自拍一区| 日韩电影视频免费| 亚洲午夜精品视频| 亚洲图片在区色| 久久精品99无色码中文字幕| 色视频www在线播放国产成人| 欧美丰满少妇xxxxx做受| 精品久久久久久中文字幕| 欧美视频裸体精品| 热久久视久久精品18亚洲精品| 亚洲在线免费观看| 色综合久久88| 日韩视频免费在线观看| 国产亚洲成精品久久| 久久久久久久久久国产精品| 欧美国产日产韩国视频| 亚洲欧美日韩爽爽影院| 亚洲人免费视频| 欧美激情视频在线观看| 久久精品久久久久| 国产a级全部精品| 日韩av中文字幕在线| 亚洲电影免费观看高清完整版在线观看| 国产精品美女网站| 国产综合在线视频| 国产精品一区二区av影院萌芽| 国产精品福利久久久| 欧美丰满老妇厨房牲生活| 国产精品毛片a∨一区二区三区|国| 久久天天躁夜夜躁狠狠躁2022| 日韩欧美在线国产| 亚洲free性xxxx护士白浆| 热久久这里只有精品| 色综合久综合久久综合久鬼88| 欧美肥臀大乳一区二区免费视频| 亚洲国产成人精品女人久久久| 激情亚洲一区二区三区四区| 久久夜精品va视频免费观看| 97视频在线观看免费高清完整版在线观看| 97在线视频免费播放| 97香蕉久久超级碰碰高清版| 欧美一区二区色| 亚洲色图35p| 成人福利在线视频| 5252色成人免费视频| 亚洲精品黄网在线观看| 国产精品免费久久久| 97视频在线观看免费高清完整版在线观看| 久久精品青青大伊人av| 国产精品国产福利国产秒拍| 国产欧美一区二区三区久久人妖| 在线日韩第一页| 午夜精品一区二区三区av| 色综合天天狠天天透天天伊人| 中文字幕亚洲一区在线观看| 久久综合久久88| 成人免费大片黄在线播放| www国产精品com| 精品国产一区二区三区久久狼5月| 亚洲老头同性xxxxx| 伦理中文字幕亚洲| 美女国内精品自产拍在线播放| 国产精品18久久久久久首页狼| 国产精品视频精品| 少妇av一区二区三区| 欧美成人免费视频| 亚洲国产婷婷香蕉久久久久久| 欧美怡红院视频一区二区三区| 精品久久久久久中文字幕一区奶水| 国产福利精品av综合导导航| 亚洲欧美激情视频| 久久国产精品首页| 久久伊人色综合| 美女黄色丝袜一区| 亚洲aa在线观看| 国产97在线亚洲| 久久久久久久久久久国产| 国外成人在线视频| 中文字幕欧美日韩精品| 日本欧美一二三区| 国内精品久久久久久中文字幕| 亚洲人成在线观看网站高清| 国产精品美女免费视频| 亚洲国产精品人人爽夜夜爽| 欧美国产在线视频| 日韩电影免费观看中文字幕| 日韩av有码在线| 欧美精品一区在线播放| 久久天天躁狠狠躁夜夜躁| 日韩av在线资源| 欧美重口另类videos人妖| 亚洲专区中文字幕| 亚洲人成网站999久久久综合| 中文字幕国产亚洲2019| 亚洲另类图片色| 九九九热精品免费视频观看网站| 久久天天躁日日躁| 日韩成人激情视频| 97免费视频在线| 国产ts一区二区| 在线看日韩av| 欧美第一黄色网| 国产欧美中文字幕| 中文综合在线观看| 亚洲精品乱码久久久久久金桔影视| 久久综合九色九九| 精品一区二区三区电影| 欧美性xxxx在线播放| 日韩av片电影专区| 国产日韩综合一区二区性色av| 亚洲国产精品系列| 欧美资源在线观看| 欧美精品一区三区| 国产亚洲精品日韩| 国产精品美女免费| 亚洲美女喷白浆| 久久久精品免费视频| 91福利视频网| 国产精品视频xxxx| 国产69久久精品成人看| 亚洲综合日韩在线| 欧美在线视频免费播放| 亚洲aⅴ男人的天堂在线观看| 国产欧美va欧美va香蕉在| 欧美日韩国产精品一区二区三区四区| 日本免费久久高清视频| 91久久精品美女高潮| 国产精品免费一区二区三区都可以| 国产日本欧美一区二区三区在线| 97国产suv精品一区二区62| 亚洲精品视频在线播放| 亚洲va欧美va国产综合久久| 亚洲国产精品女人久久久| 91精品国产免费久久久久久| 国产精品网站大全| 91香蕉亚洲精品| 亚洲精品电影在线| 国产日本欧美一区二区三区在线| 久久97精品久久久久久久不卡| 色综合色综合久久综合频道88| 亚洲香蕉av在线一区二区三区| 欧美精品成人在线| 麻豆一区二区在线观看| 欧美激情欧美激情在线五月| 欧美激情在线播放| 九九热最新视频//这里只有精品| 欧美激情国内偷拍| 亚洲国产欧美一区二区三区久久| 在线观看久久久久久| 日韩视频免费在线| 欧美日本黄视频| 亚洲精品美女久久久久| 久久精品国产69国产精品亚洲|