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),
,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.使用惟一索引。考慮某列中值的分布。對於惟一值的列,索引的效果最好,而具有多個重複值的列,其索引效果最差。例如,存放年齡的列具有...