mysql預設索引 mysql的索引

2021-10-19 19:54:16 字數 2308 閱讀 4637

什麼是索引:當你在字典中查詢你的名字的時候,你有兩種方式。第

一、一頁一頁的翻,第

二、通過拼音、筆畫,等查詢。那麼第二種方式就是通過索引的方式查詢。那麼在myslq中資料庫也是這麼幹的。索引可以增加查詢速度,但是同時mysql維護索引也需要耗費效能。

索引的分類:

| 主鍵索引

如果乙個字段為主鍵(primary key),則mysql會自動在該字段上建立主鍵索引

| 唯一索引

如果乙個欄位的值,在整張表中是唯一的,那麼就可以在該字段上建立唯一索引,一旦通過唯一索引查詢到了資料,就不需要繼續查詢了,因為它唯一的。它與主鍵索引的區別是主鍵索引必須建立在 主鍵上。

| 普通索引

如果在乙個不是主鍵、其值不是唯一的字段上建立索引,則此類索引就是普通索引。

| 全文索引

如果在某個欄位上建立了全文索引,則mysql會將該字段內的值,它認為是關鍵字的字眼抽取出來,然後對每個關鍵字建立索引,這就是全文索引。注意:全文索引需要myisam引擎支援。

| 復合索引

我們在建立索引的時候,可以針對多個字段,一起建立索引。當使用多個欄位在一起建立索引時,此類索引為復合索引。

建立唯一索引或全文索引:

語法1: create  [unique|fulltext]  index index_name on table_name (table_ field);

例:地方在goods表的goods_name欄位上建立了乙個名為goods_name的普通索引。

建立普通索引或復合索引:

語法2:alter tabel table_name add index index_type index_name (field);

例:查詢索引:

語法:1、show index from table_name;

2、show keys from table_name;

例:

刪除索引:

語法1:drop index index_name

on table_name;

例:語法2:alter table

table_name drop index index_name;

例:測試索引效果:

語法:explain select語句;

例:沒有索引的情況:

有索引的情況:

select_type:查詢型別,說明

type:這是重要的列,顯示連線使用了何種型別。從最好到最差的連線型別為 const、eq_reg、ref、range、index和all

all:full table scan ;mysql將遍歷全表以找到匹配的行;

index:index scan; index 和 all的區別在於index型別只遍歷索引;

range:索引範圍掃瞄,對索引的掃瞄開始於某一點,返回匹配值的行,常見與between ,< ,>等查詢;

ref:非唯一性索引掃瞄,返回匹配某個單獨值的所有行,常見於使用非唯一索引即唯一索引的非唯一字首進行查詢;

eq_ref:唯一性索引掃瞄,對於每個索引鍵,表中只有一條記錄與之匹配,常用於主鍵或者唯一索引掃瞄;

const,system:當mysql對某查詢某部分進行優化,並轉為乙個常量時,使用這些訪問型別。如果將主鍵置於where列表中,mysql就能將該查詢轉化為乙個常量。

索引的壞處:

| 佔據磁碟空間。有時候索引的大小要大於資料的大小。

| 減慢了資料插入和刪除的速度。因為每次插入和刪除的時候都需要更新索引,乙個表擁有的索引越多,則寫操作的平均效能下降就越大。

| 造成儲存碎片的問題。當刪除一條記錄時將會導致對應的索引中的該記錄一的對應項為空,由於索引是採用 b 樹結構儲存的,所以對應的索引項並不會被刪除,經過一段時間的增刪改操作後,資料庫中就會出現大量的儲存碎片。儲存碎片不但佔據磁碟空間,還降低資料庫效能。

mysql索引預設是什麼意思 MySQL索引的理解

一 索引是什麼?索引是幫助mysql高效獲取資料的資料結構。二 索引能幹什麼?索引非常關鍵,尤其是當表中的資料量越來越大時,索引對於效能的影響愈發重要。索引能夠輕易將查詢效能提高好幾個數量級,總的來說就是可以明顯的提高查詢效率。三 索引的分類?1 從儲存結構上來劃分 btree索引 b tree或b...

mysql索引要素 mysql索引和索引的原理

首先為什麼要加索引?資料庫伺服器有兩種儲存介質,我們需要把索引放到硬碟上,在硬碟上進行查詢時會產生i o 操作 我們通過索引來查詢某 資料的時候,需要計算產 的磁碟 i o 次數,當磁碟 i o 次數越多,所消耗的時間也就越 如果我們能讓索引的資料結構儘量減少硬碟的 i o操作,所消耗的時間也就越 ...

mysql 索引 手冊 MySQL 索引

mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...