中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 數據庫 > 
  • 數據庫優化工程師必看 第一部分(索引、視圖)

數據庫優化工程師必看 第一部分(索引、視圖)

發布時間:2020-07-15 14:27:18 來源:網絡 閱讀:779 作者:一盞燭光 欄目:數據庫

數據庫優化工程師必看 第一部分(索引、視圖)

防偽碼:勤勞一日,可得一夜安眠;勤勞一生,可得幸福長眠

       在本章技術詳解之前,先分享一個今天晚上和一個做IT的學弟的溝通總結:

我們從八點多聊到十點 ,他主要做Linux高級運維,大部分時間還是做數據庫的一些工作, 按理說還是我的小師弟 。哈哈。 他說, 剛畢業從一家外資高新技術企業跳糟到一家國企,工資漲了小2000,現在稅后也是8500。 但是,他非常后悔。我說以前的公司該是多么強大,讓你寧可每個月少掙好幾千也想回到以前的公司, 他說老表,工資不是衡量一個人價值的唯一標準, 給你舉例說明你就知道這個公司有多厲害了 ,這家公司叫青牛(北京)技術有限公司,主要做融合網絡的 最重要的是大多數的員工,自主的要求無償加班,回憶起我以前剛畢業在那家軟件公司上班的情景,總之效率特別高,例如經理下達一個命令到技術部,要求中午下班之前完成,六七個部門的員工幫我一起完成,而我現在在xx國企,想做個備份,不知道秘鑰號碼,問經理、測試工程師、問遍了,哎, 等我知道了秘鑰號,本來上午十點可以做完的事情。 結果,下午兩點才剛剛開始 ,如果給我一次重新選擇的機會,我一定選擇擁有強大戰斗力和文化底蘊的公司,我在青牛仿佛看到了未來的第二個阿里巴巴集團。我其實總結一下 就是:眼光決定格局 選擇決定未來 用我恩師的話說:公司文化的力量很大程度上決定他能走多遠飛多高!

   現在是凌晨0:54分,我們正式開始索引和視圖的詳解,希望就像博客昵稱“一盞燭光“那樣,去幫助更多的人解決實際問題,謝謝各位的支持。我將持續更新更多原創技術文檔。

實驗案例一:創建數據庫并使用索引查詢學生考試成績(多種表格在T-SQL查詢語句 第二部分 此處略)

select Student.StudentName,Subject.SubjectName,Result.ExamDate,Result.StudentResult

from Subject,Student,Result  with(INDEX=aaa)  注:INDEX=aaa,即索引=索引名

where Result.SubjectId=Subject.SubjectId and Result.StudentNo=Student.StudentNo and Result.StudentResult between 80 and 90

注:INDEX=aaa,即索引=索引名。雖然可以指定SQL Server按哪個索引進行數據查詢,但一般不需要人工指定,SQL Server將會根據所創建的索引,自動優化查詢。其實,使用索引可加快數據檢索速度,但為每個列都建立檢索沒有必要。因為檢索自身也需要維護,并占用一定資源。

案例二:驗證索引的作用

 

1、 首先創建一個數據量大的表,名稱為“學生表”,分別有三列,學號,姓名和班級,如下圖所示,學號為自動編號,班級為默認值“一班”。

數據庫優化工程師必看 第一部分(索引、視圖)

2、 向表中插入大量數據,數據越多,驗證索引的效果越好。

使用語句完成:While 1>0  Insert into 學生表(姓名)  values(‘楊文)

上面語句是一個死循環,除非強制結束,如果1大于0就會一直向表中插入姓名

如下圖所示:

數據庫優化工程師必看 第一部分(索引、視圖)

3、等待5分鐘左右,打開表的屬性,查看表的行數1030550,當前為如下圖所示:

數據庫優化工程師必看 第一部分(索引、視圖)

我們可以右擊,選擇前1000行,效果如下:

數據庫優化工程師必看 第一部分(索引、視圖)

4、使用語句查詢第900000行的數據,Select * from 學生表 Where 學號=900000

數據庫優化工程師必看 第一部分(索引、視圖)

5、打開“sql server profiler ”工具進行跟蹤,如下圖所示:

打開“sql server profiler ”工具查看跟蹤的信息,發現查詢時間很長,cpu工作了359毫秒,reads:讀了8630次,writes:寫了9次,duration:總計花費649毫秒完成查詢。

數據庫優化工程師必看 第一部分(索引、視圖)

6、為了下面分析文件更準確,多執行幾次Select * from 學生表 Where 學號=900000

然后把跟蹤的結果保存在桌面上:

數據庫優化工程師必看 第一部分(索引、視圖)

注:這里選擇第一項 ,跟蹤文件。然后保存至桌面,效果如下:

數據庫優化工程師必看 第一部分(索引、視圖)

7、 打開“數據庫引擎優化顧問”,添加跟蹤文件,進行分析,發現索引建議,需要建立索引。

數據庫優化工程師必看 第一部分(索引、視圖)

注意:選擇benet數據庫中的學生表,然后點擊“開始分析”

數據庫優化工程師必看 第一部分(索引、視圖)

數據庫優化工程師必看 第一部分(索引、視圖)

索引類型為clusterd(聚集索引),索引列為“學號”。

8、 按照“數據庫引擎優化顧問”的索引建議建立聚集索引,并且選擇“唯一”

數據庫優化工程師必看 第一部分(索引、視圖)

9、 再次執行Select * from 學生表Where 學號=900000

10、 打開sql server profiler查看跟蹤的時間,發現查詢時間大幅提升,說明索引可以提高查詢速度。

數據庫優化工程師必看 第一部分(索引、視圖)

發現總計時間為1毫秒,幾乎忽略不計,以至于幾乎不花時間立即查詢

案例四:分別練習創建各種索引

首先我們先來了解一下索引的分類以及選擇索引列的注意事項:

數據庫優化工程師必看 第一部分(索引、視圖)

數據庫優化工程師必看 第一部分(索引、視圖)

我們掌握了學術性的理論后,將進行詳細的試驗操作來進一步鞏固:


1、 創建聚集索引

目前tstudent表中沒有任何索引也沒有主鍵

數據庫優化工程師必看 第一部分(索引、視圖)

為tstudent表創建聚集索引

數據庫優化工程師必看 第一部分(索引、視圖)

選中studentID,單擊左上側的主鍵按鈕

數據庫優化工程師必看 第一部分(索引、視圖)

為Tstuden表的studentID創建主鍵就同時創建了聚集索引

數據庫優化工程師必看 第一部分(索引、視圖)

2、創建組合索引

為成績表創建組合索引,因為一個學生不能為一門學科錄入兩次成績,所以將成績表中的studentID和subjectID創建組合索引

數據庫優化工程師必看 第一部分(索引、視圖)

數據庫優化工程師必看 第一部分(索引、視圖)

數據庫優化工程師必看 第一部分(索引、視圖)

數據庫優化工程師必看 第一部分(索引、視圖)

數據庫優化工程師必看 第一部分(索引、視圖)

數據庫優化工程師必看 第一部分(索引、視圖)

3、用命令創建聚集索引

創建一個表TS

create TABLE TS(

StudentID varchar(10)NOT NULL,

Sname varchar(10)DEFAULT NULL,

sex char(2)DEFAULT NULL,

cardID varchar(20)DEFAULT NULL,     注意:實際工作中建議從簡從快,保證質量,這些語法可拓展練習

Birthday datetime DEFAULT NULL,

Email varchar(40)DEFAULT NULL,

Class varchar(20)DEFAULT NULL,

enterTime datetime DEFAULTNULL

)

Go

用命令創建聚集索引

create clustered index CL_studentID

on TS(studentID)

創建聚集索引不一定創建主鍵,如下圖所示:

數據庫優化工程師必看 第一部分(索引、視圖)

4、創建唯一索引

創建唯一性約束的時候就會創建唯一性索引,不能有重復值

為Tstudent表創建唯一非聚集索引

create unique nonclustered index U_cardID on TStudent(cardID)

數據庫優化工程師必看 第一部分(索引、視圖)

5、創建非聚集索引---可以有重復值

Tstudent表的姓名列創建非聚集索引

數據庫優化工程師必看 第一部分(索引、視圖)

使用命令查看表上的索引

Select from sys.sysindexes where id=(select object_id from sys.all_objects where

name='Tstudent')

Indid中1代表聚集索引

Indid中2代表唯一非聚集索引

Indidz中3代表非聚集索引

數據庫優化工程師必看 第一部分(索引、視圖)

二、視圖

數據庫優化工程師必看 第一部分(索引、視圖)

數據庫優化工程師必看 第一部分(索引、視圖)

數據庫優化工程師必看 第一部分(索引、視圖)

在這里,一些舉例試驗就不再一一演示了,因為,在我看來,作為一名數據庫管理員,必須要掌握數據庫優化這項技能。

最好掌握一些基本的通用語法,雖說視圖是個變量,隨時更新變化,用起來很方便簡潔,可直接在其基礎上直接

執行:

例如

select * from 視圖名

where 條件=xxx

很方便,但是視圖畢竟有局限性,在性能和修改限制方面有待提高。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

衡东县| 北宁市| 平凉市| 迭部县| 清苑县| 丘北县| 齐河县| 嵊州市| 保山市| 沂水县| 如东县| 蓬溪县| 屯门区| 郧西县| 石楼县| 平阴县| 榆树市| 万年县| 黑水县| 定陶县| 石渠县| 含山县| 常山县| 抚顺市| 乡宁县| 钟祥市| 砚山县| 田东县| 策勒县| 工布江达县| 喀喇沁旗| 延边| 陆河县| 佳木斯市| 白城市| 广昌县| 屯留县| 山阳县| 灵宝市| 富宁县| 博野县|