11 MySQL 索引的分類 測試索引 索引原則

2021-10-14 09:39:32 字數 3242 閱讀 4060

mysql -> 索引 -> 索引的分類、測試索引、索引原則

mysql官方對索引的定義為:索引(index)是幫助mysql高效獲取資料的資料結構。

提取句子主幹,就可以得到索引的本質——索引是資料結構。

1. 索引的分類

在乙個表中,主鍵索引只能有乙個,唯一索引可以有多個

唯一索引 unique key

常規索引 key/index

全文索引 fulltext

基礎語法:

-- 索引的使用

-- 1、在建立表的時候給字段增加索引

-- 2、建立表完畢後,增加索引

-- 顯示所有的索引資訊

show

index

from student

-- 增加乙個索引

alter

table school.

`student`

add fulltext index

`studentname`

(`studentname`);

-- explain 分析sql執行的狀況

explain

select

*from student

explain

select

*from student where

match

(studentname) against(

'a')

2. 測試索引

create

table

(`id`

bigint(20

)unsigned

notnull

auto_increment

,`name`

varchar(50

)default

''comment

'使用者暱稱'

,`email`

varchar(50

)not

null

comment

'使用者郵箱'

,`phone`

varchar(20

)default

''comment

'手機號'

,`gender`

tinyint(4

)unsigned

default

'0'comment

'性別(0:男;1:女)'

,`password`

varchar

(100

)not

null

comment

'密碼'

,`age`

tinyint(4

)default

'0'comment

'年齡'

,`create_time`

datetime

default

current_timestamp

,`update_time`

timestamp

null

default

current_timestamp

onupdate

current_timestamp

,primary

key(

`id`))

engine

=innodb

default

charset

=utf8mb4 comment

=-- 插入100萬資料

delimiter $$ -- 寫函式之前必須要寫,標誌

create

function mock_date(

)returns

intbegin

declare num int

default

1000000

;declare i int

default0;

while i

insert

`name`

,`email`

,`phone`

,`gender`

,`password`

,`age`

)values

(concat(

'使用者'

,i),

'[email protected]'

,concat(

'18'

,floor(rand()*

((999999999

-100000000)+

100000000))

),floor(rand()*

2),uuid(

),floor(rand()*

100));

set i = i+1;

endwhile

;return i;

end;

select mock_date();

select

*`name`

='使用者9999'

;-- 0.530 sec

select

*`name`

='使用者9999'

;-- 0.499 sec

select

*`name`

='使用者9999'

;-- 0.483 sec

explain

select

*`name`

='使用者9999'

;create

`name`);

select

*`name`

='使用者9999'

;-- 0.010 sec

select

*`name`

='使用者9999'

;-- 0.001 sec

explain

select

*`name`

='使用者9999'

3. 索引原則

索引的資料結構

btree :innodb預設的資料結構

學習:mysql索引背後的資料結構及演算法原理

11 mysql開發中容易犯的錯誤

錯 使用count 判斷是否存在符合條件的資料 正 使用 select limit 1 錯 在執行1個更新語句後,使用查詢方式判斷此更新語句是否有執行成功 正 使用row count 函式判斷修改行數 錯 檢視在 on 條件中過濾不滿足條件的記錄 正 在 where 條件中進行過濾 錯 在使用 in...

mysql常見的索引型別 mysql 常用索引型別

一 索引的型別 mysql索引的四種型別 主鍵索引 唯一索引 普通索引和全文索引。通過給字段新增索引可以提高資料的讀取速度,提高專案的併發能力和抗壓能力。索引優化時mysql中的一種優化方式。索引的作用相當於圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。主鍵索引 主鍵是一種唯一性索引,但它必須...

描述mysql的索引原則 設計Mysql索引的原則

1.搜尋的索引列,不一定是所要選擇的列。換句話說,最適合索引的列是出現在where 子句中的列,或連線子句中指定的列,而不是出現在select 關鍵字後的選擇列表中的列。2.使用惟一索引。考慮某列中值的分布。對於惟一值的列,索引的效果最好,而具有多個重複值的列,其索引效果最差。例如,存放年齡的列具有...