六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

mysql的索引優化怎么使用

[摘要]通常在每一本書的前幾頁都是目錄,而最后幾頁會有一個關鍵字索引。對于數據庫來講系統表(如:sysobjects等)就是目錄,而標字段上的索引就如同書本后面的關鍵字索引。數據庫中,目錄(數據字典)和索引...
通常在每一本書的前幾頁都是目錄,而最后幾頁會有一個關鍵字索引。

對于數據庫來講系統表(如:sysobjects等)就是目錄,而標字段上的索引就如同書本后面的關鍵字索引。

數據庫中,目錄(數據字典)和索引的區別:目錄縱向、索引橫向。

一、影響索引作用的因素

區分度(檢索比率)

優化器根據統計信息來生成執行計劃,如果數據庫沒有收集索引的統計信息,優化器就無從下手,只能按部就班,通過全表掃描來執行查詢。所以,新創建的索引需要重新運行統計,否則索引無效。

舉一個例子,有個表TABLE1,其中有一個字段COL1取值是“1”、“2”、“3”三種,運行統計的結果是告訴數據庫TABLE1中的數據其中字段COL1的各種取值所占的比重。示意如下:

“1” - 12%;

“2” - 66%;

“3” - 22%。

假設還有個字段COL2取值和數據所占的百分比如下:

“A” - 50%;

“B” - 50%。

則查詢語句1:

select * from TABLE1 where COL1 = “1”and COL2 = “A”,

數據庫優化器會優先選擇字段COL1上的索引來定位表中的數據,因為通過COL1上的索引就可以將結果集迅速定位在一個小范圍內12%。而相反的,對于查詢語句2:

select * from TABLE1 where COL1 = “2”and COL2 = “A”,

數據庫會優先選擇COL2上的索引,因為對于語句2的查詢條件COL2上的索引具有更好的區分度。

從上面可以看出,數據庫的優化器通常會優先選擇區分度較高的索引(針對于查詢條件,條件不同選擇的索引可能不同)。

數據庫里的數據是變化的,所以某個時候采集的統計信息,過一段時間后可能會過時,甚至誤導數據庫優化器,這樣同樣會造成運行性能的低下。所以除了,最初建立索引時需要運行統計,在表中的數據發生變化時也需要運行統計。經驗:當表中數據量變化達到10%時,需要重新運行統計。

二、聚集度

范圍掃描

表大小:

小型表

中大型表

超大型表

業務類型

OLTP和OLAP

函數與索引

函數,like語句。。。

Substring(col_name,1, 3)vs. Substring(col_name, 3, 3)

like ‘QQQ% vs. like ‘%QQQ’

索引開銷

性能利器

雙刃劍

索引對插入操作的影響(Oracle)

索引對插入操作的影響(MySQL)

比較索引與促發器對性能的影響

索引總結

使用索引實現關鍵數據的高效訪問。但是需要知道每個索引都會給數據庫更新帶來額外的開銷。這就意味著,低效的索引會給數據庫帶來災難。

對于數據庫,我們必須關注關鍵數據的讀取,為他們提供最高效的訪問路徑。對此,基本策略就是建立索引。在索引提供高效訪問的同時,也帶來了額外的系統開銷。開銷分為磁盤空間的開銷和處理器開銷。下面我們討論一下處理器開銷。每當在表中插入或刪除記錄時,該表的所有索引必須進行相應調整。每當對已建立索引的字段進行更新時,這種調整也會發生。舉例子說,如果在未建立索引的表中插入數據需要100個單位時間,那么每增加一個索引就會增加100到250個單位時間。有趣的是,維護索引的開銷與簡單觸發器帶來的開銷大致相當。

在建立索引前線介紹一些最通俗的信息,這些信息來自developWorks,列出這些信息是因為我覺得這些信息通常情況下是值得參考的:

1.當要在一個合理的時間內結束查詢時,應避免添加索引,因為索引會降慢更新操作的速度并消耗額外的空間。有時候還可能存在覆蓋好幾個查詢的大型索引。

1.基數較大的列很適合用來做索引。

3.考慮到管理上的開銷,應避免在索引中使用多于5個的列。

4.對于多列索引,將查詢中引用最多的列放在定義的前面。

5.避免添加與已有的索引相似的索引。因為這樣會給優化器帶來更多的工作,并且會降慢更新操作的速度。相反,我們應該修改已有的索引,使其包含附加的列。例如,假設在一個表的 (c1,c2)上有一個索引i1。您注意到查詢中使用了"wherec2=?",于是又創建一個(c2)上的索引i2。但是這個相似的索引沒有添加任何東西,它只是i1的冗余,而現在反而成了額外的開銷。

6.如果表是只讀的,并且包含很多的行,那么可以嘗試定義一個索引,通過CREATE INDEX中的INCLUDE子句使該索引包含查詢中引用的所有列(被INCLUDE子句包含的列并不是索引的一部分,而只是作為索引頁的一部分來存儲,以避免附加的數據FETCHES)。

對于數據倉庫(查詢系統數據庫)可以建立較多的索引(索引和數據的比例可以是1:1)。

決定是否使用索引,可以重點考慮檢索比率。即,判斷索引有效性的依據,就使用鍵值作唯一性條件檢索出的數據的百分比。百分比越低,索引越有效。做出這個論斷的前提是一些假設,如磁盤訪問的相關性能。

索引鍵值相關記錄的物理位置是否相鄰也很重要,因為是通過塊來操作數據的。建立了索引之后,如果索引鍵所指向的記錄散布于整個表中,即使這些記錄在表中占的比率很小,但因為它們分散在整個磁盤上,所以索引的性能就會大打折扣。

另外值得注意的是,函數和類型轉換可能導致索引失效。

以上就是mysql的索引優化如何使用的詳細內容,更多請關注php中文網其它相關文章!


學習教程快速掌握從入門到精通的SQL知識。




主站蜘蛛池模板: 日日摸夜夜摸人人嗷嗷叫 | 亚洲一区二区影视 | 亚洲aⅴ| 五月婷婷综合激情 | 日韩一二区 | 五月激情站| 天天爱夜夜做 | 色悠久久久久综合欧美99 | 天天爱天天干天天 | 亚洲视频污 | 特黄一级毛片 | 伊人免费视频二 | 日本又黄又硬又粗好爽视频免费 | 日韩 亚洲 中文 图片 小说 | 一级a毛片免费观看久久精品 | 中文字幕在线视频第一页 | 天天曰天天 | 日日拍夜夜嗷嗷叫狠狠 | 欧美囗交| 一级做a爰片久久毛片美女 一级做a爰片久久毛片毛片 | 一级淫片免费看 | 亚洲国产精品线在线观看 | 中文字幕成人 | 天天干天天干天天干天天干 | 欧美一级视频在线观看 | 日韩一级二级三级 | 日一区二区 | 五月天丁香婷婷综合久久 | 欧美亚洲三级 | 日日天天 | 天堂网中文 | 手机国产乱子伦精品视频 | 手机看片高清日韩精品 | 热伊人99re久久精品最新地 | 天天躁夜夜躁狠狠躁2021 | 亚洲成在人线中文字幕 | 天堂影院在线观看mv | 日韩亚洲一区中文字幕在线 | 在线资源天堂 | 伊人影院2019| 亚洲福利影院 |