索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定記錄。索引種類
描述普通索引
最基本的索引,無要求限制
唯一索引
要求索引列值必須唯一,可以有空值
主鍵索引
特殊的唯一索引,但不可以有空值
復合索引
兩個或多個列上的索引被稱作復合索引。
全文索引
對文字內容進行分詞索引。
建立索引
#建立普通索引
create
index indexname on tablename(columnname(length));
#create index idx_name on employee(name)
#建立唯一索引
create
unique
index indexname on tablename(columnname(length));
#建立復合索引
create
index indexname on tablename(columnname1, columnname2, …)
;
刪除索引drop
index
[indexname]
on tablename;
檢視索引show
index
from tablename;
索引使用經驗在mysql中,如果建立了復合索引(name, salary, dept),就相當於建立了(name, salary, dept)、 (name, salary)和(name)三個索引,這被稱為復合索引前導列特性,因此在建立復合索引時應該將最常用作查詢條件的列放在最左邊,依次遞減。
#使用了索引的查詢語句
select
*from employee where name=
'xsy'
;select
*from employee where name=
'xsy'
and salary=
8800
;select
*from employee where name=
'xsy'
and dept=
'部門a'
select
*from employee where name=
'xsy'
and salary=
8800
and dept=
'部門a'
;#未使用索引的查詢語句
select
*from employee where salary=
8800
;select
*from employee where dept=
'部門a'
;select
*from employee where salary=
8800
and dept=
'部門a'
;
explain命令可以檢視sql語句的執行計畫。當explain與sql語句一起使用時,mysql將顯示來自優化器的有關語句執行計畫的資訊。explain部分功能介紹
explain的使用
explain的使用只需要在對應的sql語句之前加上explain命令。
explain 返回結果解析
引數描述
id執行select子句或操作表的順序
select_type
查詢的型別,如******、primary、subquery、derived、union等
table
當前使用的表名
partitions
匹配的分割槽
type連線型別,如system、const、eq_ref、ref、range、index、all等(效率依次遞減)
possible_keys
可能使用的索引
key實際使用的索引,null表示未使用索引
key_len
查詢中使用的索引長度
ref列與索引的比較
rows掃瞄的行數
filtered選取的行數佔掃瞄的行數的百分比,理想的結果是100
extra
其他額外資訊
mysql 索引的使用
一 什麼是索引!學乙個技術的時候,首先要知道他是什麼,他的作用是什麼,他能幹什麼 索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b 樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就...
mysql索引的使用
索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可以有多個單列索引,但這不是組合索引。組合索引,即乙個索包含多個列。1 普通索引 這是最基本的索引,它沒有任何限制。它有以下幾種建立方式 建立索引 create index indexname on tablename column ...
mysql索引的使用
最近在學mysql,由於對索引沒怎麼接觸過,故做下筆記已被後面參考.假設我們有個公司表沒有建立索引,公司有個編號,當我們要查詢編號為13的公司 其中表中存在很多記錄關於同乙個公司的 由於公司編號沒有排序的,要查詢該公司資訊必須掃瞄全表.如果我們建立了索引,編號會排好序,當我們查詢13的公司,資料庫快...