1.了解索引及其使用
2.熟悉常見的索引種類
3.掌握索引的基本使用【重點】
4.掌握索引的實戰經驗
索引是一種特殊的資料結構,類似於圖書的目錄,他能夠極大地提公升資料庫查詢效率。
如果沒有索引,在查詢資料時必須掃瞄表中的所有記錄才能找出符合條件的記錄,這種
【全表掃瞄的查詢效率非常低】
舉例:樓層索引,字母索引
常見索引種類:
需要注意的是,不是索引越多越好
檢視索引
mysql>
show
index
from employee\g;結果*
****
****
****
****
****
****
**1.row**
****
****
****
****
****
****
*table: employee
non_unique: 0
key_name: primary
seq_in_index: 1
column_name: id
collation: a
cardinality: 13
sub_part: null
packed: null
null:
index_type: btree
comment:
index_comment:
visible: yes
expression: null
1row
inset
(0.00 sec)
error:
no query specified
查名字是墨菲的資料
mysql>
explain
select
*from employee where name=
'墨菲'\g;**
****
****
****
****
****
****
*1.row***
****
****
****
****
****
****
id: 1
select_type: ******
table: employee
partitions: null
type: all
possible_keys: null
key: null
key_len: null
ref: null
rows: 13
filtered: 10.00
extra: using
where
1row
inset
,1 warning (
0.00 sec)
建立乙個索引
mysql>
create
index indexname on employee(name)
;query ok,
0rows affected (
11.06 sec)
records: 0 duplicates: 0
warnings: 0
重新檢視墨菲資料
mysql>
explain
select
*from employee where name=
'墨菲'\g;**
****
****
****
****
****
****
*1.row***
****
****
****
****
****
****
id: 1
select_type: ******
table: employee
partitions: null
type: ref
possible_keys: indexname
key: indexname
key_len: 123
ref: const
rows: 1
filtered: 100.00
extra: null
1row
inset
,1 warning (
0.00 sec)
查詢效能得到了極大的提公升
刪除索引:
mysql>
drop
index indexname on employee;
query ok,
0rows affected (
2.68 sec)
records: 0 duplicates: 0
warnings: 0
查詢有一百萬資料的測試表username=
'user_0008888'
select
*from test_user where username=
'user_0008888'
;給其建立乙個索引,
create
index idx_username on test_user(username)
;這個過程是很慢的,因為有一百萬條記錄
然後再去查詢一次,發現查詢時間大大縮短
select
*from test_user where username=
'user_0008888'
;但是如果用like去查詢,執行的仍然是全表掃瞄
select
*from test_user where username like
'%user_0008888%'
;所以說不是建了索引查詢就一定快,要看我們如何使用。
MySql索引基本
索引用於快速找出在某個列中有一特定值的行。如果不使用索引,需要遍歷整張表,表越大查詢耗時越大 mysql中的索引的儲存型別有兩種 btree hash。具體實現機制參照另一篇部落格 優點 缺點 使用原則 1.更新頻繁的表應該避免過度索引,對查詢頻繁的字段應該建立索引 2.資料量小的表不需要索引 3....
Mysql基本使用原理和索引型別
1.建立使用者 建立使用者的三種方法 1 insert into mysql.user host,user,password values localhost hadoop password hadoop 2 create user hadoop localhost identified by ha...
mysql索引的基本操作
1.建立表時新增索引 create table user id int,name varchar 30 age int,not null,code text not null,fulltext name,index ind code primary key id 2.新增primary key 主鍵...