小貝 mysql索引學習與優化

2021-12-30 03:46:50 字數 2992 閱讀 5182

1、以書的目錄為例,通過檢視目錄,再找到對應的內容。因此,索引就是給資料加上了』目錄』,便於快速找到資料

2、索引的作用:

好處: 加快了查詢速度

壞處: a、降低了增刪改的速度

b、增大了表的檔案大小(索引檔案甚至可能比資料檔案還大)

案例: 設有某個表15列,存在10列上有索引,共500w行資料,如何快速匯入?

答: 1、把空表的索引全部刪除 2、匯入資料 3、資料匯入完畢後再建立索引

3、索引演算法

設有n條隨機記錄,不用索引,平均查詢n/2次,用了索引呢?

3.1、二叉樹索引對應次數為log2n次

說明例子,資料1,2,3,4,5,6,7,以中間值4為分界點

2 61 3 5 7

查詢3需要多少次?

由於3<4,因此3在二叉樹的左邊,由於3>2,因此在以2為根節點的右邊。結果需要2次

3.2、雜湊索引,理論上為1次

說明例子,資料1,2,3,4,5,6,7

hash[1]=001

hash[2]=003

hash[3]=005

hash[4]=007

hash[5]=009

hash[6]=011

hash[7]=013

查詢3需要多少次?

先hash下,得到005,這樣就找到了。剛好1次。

hash的不足:

a、浪費空間,因為hash的值不連續。

b、hash要求高,確保每個值的hash值不同

4、索引的使用原則

a、不過度索引

b、索引條件列(where後面最頻繁的條件比較適宜索引)

c、索引雜湊值,過於集中的值不要索引(如: 性別)

5、如何看表結構

5.1、儲存引擎為myisam

frm為表結構、myd為資料檔案、myi為索引檔案

5.2、儲存引擎為innodb

frm為表結構、ibd為資料檔案和索引檔案

1、型別

a、普通索引(index): 僅僅是加快查詢速度

b、唯一索引(unique index): 行上的值不能重複

c、主鍵索引(primary key): 不能重複

d、全文索引(fulltext index):

唯一索引和主鍵索引的關係:

主鍵必唯一,但是唯一索引不一定是主鍵;一張表上只能有乙個主鍵,但是可以有乙個或多個唯一索引

2、如何檢視表中的索引

3、建立索引

3.1、對已經存在的表建立索引

語法: alter table 表名 add index/uniqueindex/fulltext index/primary key [索引名](列名) (備註:索引名可選,不指定則與列名相同)

表結構:

a、給tel列建立普通索引

(備註: 指定索引名與列名相同)

b、給email列加上唯一索引

c、給intro列加上全文索引

d、給id列加上主鍵索引

e、加上多列組合索引

(備註: 這個普通索引m作用在列email和tel列上)

錯誤點:

錯誤原因: 沒有指定該索引應用在那個列上。

3.2、建立新錶時,指定索引

create table m(id int primary keyauto_increment, email varchar(30), tel char(11), intro text, index(tel), uniqueindex(email), fulltext index(intro) )engine=myisam charset=utf8;

4、刪除索引

4.1、刪除普通索引/唯一索引/全文索引

4.2、刪除主鍵索引

如果主鍵列本身就是自增的,則刪除時會報錯

這個情況,應該先修改列的自增屬性。

三、全文索引

全文索引在mysql的預設情況下,對於中文意義不大

因為英文有空格,標點符號來拆成單詞,進而對單詞進行索引。

而對於中文,沒有空格來隔開單詞。mysql無法識別每個中文詞。

用法: match(全文索引名) against(『keyword』);

MySQL索引與優化

一 索引的概述與分類 什麼是索引?mysql官方定義 索引是 index 是幫助的mysql高效獲取資料的資料結構,我們可以理解為快速查詢排好序的一種資料結構。索引類似於圖書的目錄索引,可以提高檢索的效率,降低資料庫的io成本。索引的分類 總結 索引就像是一本書的目錄是為了提高檢索的速度。在mysq...

MySQL 索引與查詢優化

本文介紹一些優化 mysql 索引設計和查詢的建議。在進行優化工作前,請務必了解mysql explain命令 檢視執行計畫 索引在邏輯上是指從索引列 關鍵字 到資料的對映,通過索引可以快速的由關鍵字查詢到資料記錄。順序查詢複雜度為o n 樹狀索引查詢複雜度為o logn 雜湊索引為o 1 mysq...

MySQL索引型別與優化

索引優化 參考資料 在mysql中,索引是在儲存引擎層而不是伺服器層實現的,所以不同的儲存引擎的索引型別和實現不同。大多數儲存引擎都使用b tree作為預設索引型別,但實際在技術上往往使用的是b tree,例如innodb。b tree索引之能夠加快訪問資料的速度,是因為儲存引擎不再需要進行全表掃瞄...