MySQL索引的使用

2021-10-03 08:13:18 字數 2335 閱讀 3600

索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定記錄。

索引種類

描述普通索引

最基本的索引,無要求限制

唯一索引

要求索引列值必須唯一,可以有空值

主鍵索引

特殊的唯一索引,但不可以有空值

復合索引

兩個或多個列上的索引被稱作復合索引。

全文索引

對文字內容進行分詞索引。

建立索引

#建立普通索引

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的公司,資料庫快...