溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用mysql索引

發(fā)布時間:2020-08-03 11:11:53 來源:億速云 閱讀:105 作者:小豬 欄目:MySQL數(shù)據(jù)庫

這篇文章主要為大家展示了如何使用mysql索引,內(nèi)容簡而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

什么是索引:

  • 索引可以幫助快速查找數(shù)據(jù)
  • 基本上索引都要求唯一(有些不是),所以某種程度上也約束了數(shù)據(jù)的唯一性。
  • 索引創(chuàng)建在數(shù)據(jù)表對象上,由一個或多個字段組成,這若干個字段組成“鍵”存儲到數(shù)據(jù)結(jié)構(gòu)中(B樹或者哈希表)?!究梢愿鶕?jù)數(shù)據(jù)結(jié)構(gòu)分類成B樹索引(innodb\myisam引擎),哈希索引(memory引擎)】
  • 由于索引是加快數(shù)據(jù)查找的,所以一般都使用在經(jīng)常需要用來查找的字段上(比如where中常用字段)
  • mysql支持的索引類型有:普通索引、唯一索引、全文索引、單列索引、多列索引、空間索引。

補(bǔ)充:

  • 主鍵與索引的區(qū)別:主鍵也是一種索引,主鍵也是一種唯一索引,但索引的作用主要是提高查找速度,而主鍵作用主要是標(biāo)識記錄唯一性(當(dāng)然也便于查找)。

創(chuàng)建索引:

普通索引:index

  • 普通索引就是沒有“唯一”,“不為空”要求的索引。
  • 語法:
    • create table 表名(字段 數(shù)據(jù)類型,字段 數(shù)據(jù)類型,…index|key [索引名] (字段  [索引的長度] [asc|desc]));
      • index|key代表可以使用index關(guān)鍵字或key關(guān)鍵字
      • 索引名是可選的,不填時索引名為字段名
      • 字段是加索引的字段,字段可以有多個(多列索引)。
      • 索引的長度,可選的(有些引擎設(shè)置了最大長度,一般不深入學(xué)習(xí)應(yīng)該很少遇到,這里不講述)
      • asc|desc是可選的,代表索引中的“關(guān)鍵字”的排序
    • 在現(xiàn)有表結(jié)構(gòu)的情況下增加索引:create index 索引名 on 表名 (字段  [索引的長度] [asc|desc]);
    • 在現(xiàn)有表結(jié)構(gòu)的情況下增加索引:alter table 表名 add index|key 索引名(字段  [索引的長度] [asc|desc]);

唯一索引:

  • 唯一索引,就是創(chuàng)建索引時,要求字段的數(shù)據(jù)是唯一的。
  • 創(chuàng)建語法:
    • create table 表名(字段 數(shù)據(jù)類型,字段 數(shù)據(jù)類型,… unique index|key [索引名] (字段  [索引的長度] [asc|desc]));
      • 【參數(shù)信息參考普通索引的】
    • 在現(xiàn)有表結(jié)構(gòu)的情況下增加索引:create unique index 索引名 on 表名 (字段  [索引的長度] [asc|desc]);
    • 在現(xiàn)有表結(jié)構(gòu)的情況下增加索引:alter table 表名 add unqiue index|key 索引名(字段  [索引的長度] [asc|desc]);

全文索引:fulltext index

  • 全文索引一般使用在數(shù)據(jù)類型為char,varchar和text的字段上,方便查找這些比較長的數(shù)據(jù)。
  • myisam存儲引擎支持全文索引
  • 創(chuàng)建語法:
    • create table 表名(字段 數(shù)據(jù)類型,字段 數(shù)據(jù)類型,… fulltext index|key [索引名] (字段  [索引的長度] [asc|desc]));
      • 【參數(shù)信息參考普通索引的】
    • 在現(xiàn)有表結(jié)構(gòu)的情況下增加索引:create fulltext index 索引名 on 表名 (字段  [索引的長度] [asc|desc]);
    • 在現(xiàn)有表結(jié)構(gòu)的情況下增加索引:alter table 表名 add fulltext index|key 索引名(字段  [索引的長度] [asc|desc]);

單列索引:

  • 上面的加索引字段為一個時,為單列索引

多列索引:

  • 加索引的字段為多個時,為多列索引
  • 創(chuàng)建語法:只需要將上面的(字段  [索引的長度] [asc|desc])變成(字段1  [索引的長度] [asc|desc],字段2  [索引的長度] [asc|desc],字段1  [索引的長度] [asc|desc])即可。

查看索引:

  • 可以通過查看表結(jié)構(gòu)查看索引
    • 如何使用mysql索引
  • 可以通過查看表創(chuàng)建語句查看索引
    • 如何使用mysql索引
  • 可以使用explain語句查看索引,explain是用來判斷mysql語句執(zhí)行的時間效率的。
    • 所以可以使用explain select語句 where 加上索引的字段作為條件;
    • 結(jié)果中的possible_key是可能使用到的索引,key實(shí)際使用到的索引。
    • 比如:
      explain select * from user_info where username="lilei";
         
      如何使用mysql索引

刪除索引:

  • drop index 索引名 on 表名;
    • 比如:
      drop index myindex on user_info;

以上就是關(guān)于如何使用mysql索引的內(nèi)容,如果你們有學(xué)習(xí)到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI