日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql数据库(四)——mysql索引相关知识

發布時間:2024/2/28 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql数据库(四)——mysql索引相关知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Mysql數據庫(四)——mysql索引相關知識

  • 一、索引的概念
  • 二、索引的優缺點
    • 1、優點
    • 2、缺點
  • 三、創建索引的原則
  • 四、索引的分類和創建方法
    • 1、普通索引
      • ①、直接創建索引
      • ②、修改表方式創建
      • ③、創建表的時候指定索引
    • 2、唯一索引
      • ①、直接創建
      • ②、修改表方式創建索引
      • ③、創建表的時候指定索引
    • 3、主鍵索引
      • ①、創建表的時候指定索引
      • ②、修改表方式創建索引
    • 4、組合索引
      • ①、創建表的時候指定組合索引
      • ②、修改表方式創建組合索引
    • 5、全文索引
      • ①、直接創建索引
      • ②、修改表方式指定全文索引
      • ③、創建表的時候指定全文索引
  • 五、查看索引
  • 六、刪除索引
    • 1、直接刪除索引
    • 2、修改表方式刪除索引
    • 3、刪除主鍵索引
  • 總結
    • 索引的作用:
    • 索引的副作用:
    • 創建索引的原則——根據情況,創建合適的索引
    • 索引分類和操作
    • 面試題: mysql優化:

一、索引的概念

  • 索引是一個排序的列表,在這個列表中存儲著索引的值和包含這個值的數據所在行的物理地址(類似于C語言的鏈表通過指針指向數據記錄的內存地址)。
  • 使用索引后可以不用掃描全表來定位某行的數據,而是先通過索引表找到該行數據對應的物理地址然后訪問相應的數據,因此能加快數據庫的查詢速度。
  • 索引就好比是一本書的目錄,可以根據目錄中的頁碼快速找到所需的內容。
  • 索引是表中一列或者若干列值排序的方法。
  • 建立索引的目的是加快對表中記錄的查找或排序。

二、索引的優缺點

1、優點

  • 設置了合適的索引之后,數據庫利用各種快速定位技術,能夠大大加快查詢速度,這是創建所有的最主要的原因。
  • 當表很大或查詢涉及到多個表時,使用索引可以成千上萬倍地提高查詢速度。
  • 可以降低數據庫的IO成本,并且索引還可以降低數據庫的排序成本。
  • 通過創建唯一性索引,可以保證數據表中每一行數據的唯一性。
  • 可以加快表與表之間的連接。
  • 在使用分組和排序時,可大大減少分組和排序的時間。

2、缺點

  • 索引需要占用額外的磁盤空間。
  • 對于 MyISAM 引擎而言,索引文件和數據文件是分離的,索引文件用于保存數據記錄的地址。
  • 而 InnoDB 引擎的表數據文件本身就是索引文件。
  • 在插入和修改數據時要花費更多的時間,因為索引也要隨之變動

三、創建索引的原則

  • 索引隨可以提升數據庫查詢的速度,但并不是任何情況下都適合創建索引。因為索引本身會消耗系統資源,在有索引的情況下,數據庫會先進行索引查詢,然后定位到具體的數據行,如果索引使用不當,反而會增加數據庫的負擔。
  • 表的主鍵、外鍵必須有索引。因為主鍵具有唯一性,外鍵關聯的是子表的主鍵,查詢時可以快速定位。
  • 記錄數超過300行的表應該有索引。如果沒有索引,需要把表遍歷一遍,會嚴重影響數據庫的性能。
  • 經常與其他表進行連接的表,在連接字段上應該建立索引。
  • 唯一性太差的字段不適合建立索引。
  • 更新太頻繁地字段不適合創建索引。
  • 經常出現在 where 子句中的字段,特別是大表的字段,應該建立索引。
  • 索引應該建在選擇性高的字段上。
  • 索引應該建在小字段上,對于大的文本字段甚至超長字段,不要建索引。

四、索引的分類和創建方法

  • 索引可分為5類
    • 普通索引
    • 唯一索引
    • 主鍵索引
    • 組合索引
    • 全文索引
  • 創建方法
    • 直接創建索引(主鍵索引無法使用此方式)
    • 修改表結構方式添加索引
    • 創建表結構時創建索引

1、普通索引

  • 最基本的索引類型,沒有唯一性之類的限制。

①、直接創建索引

create index 索引名 on 表名 (列名[(length)]);(列名[(length)]:length 為可選項,如果忽略 length 的值,則使用整個列的值作為索引。如果指定使用列的前 length 個字符來創建索引,這樣有利于減小索引文件的大小。 索引名建議以 “index” 結尾。


②、修改表方式創建

alter table 表名 add index 索引名 (列名);

③、創建表的時候指定索引

create table 表名 (字段1 數據類型,字段2 數據類型,index 索引名 (列名));

2、唯一索引

  • 與普通索引類似,但區別是唯一索引列的每個值都唯一。
  • 唯一索引允許有空值(注意和主鍵不同)。如果是用組合索引創建,則列值的組合必須唯一。
  • 添加唯一鍵將自動創建唯一索引。
  • [ ]

①、直接創建

create unique index 索引名 on 表名 (列名);

②、修改表方式創建索引

alter table 表名 add unique 索引名 (列名);

③、創建表的時候指定索引

create table 表名 (字段1 數據類型,字段2 數據類型,unique 索引名 (列名));

3、主鍵索引

  • 是一種特殊的唯一索引,必須指定為“PRIMARY KEY”。
  • 一個表只能有一個主鍵,不允許有空值。 添加主鍵將自動創建主鍵索引。

①、創建表的時候指定索引

create table 表名 (字段1 數據類型,字段2 數據類型,primary key (列名));

②、修改表方式創建索引

alter table 表名 add primary key (列名);

4、組合索引

  • 可以是單列上創建的索引,也可以是在多列上創建的索引。
  • 需要滿足最左原則,因為select語句的 where 條件是依次從左往右執行的,所以在使用 select 語句查詢時 where 條件使用的字段順序必須和組合索引中的排序一致,否則索引將不會生效。

①、創建表的時候指定組合索引

create table 表名 (字段1 數據類型,字段2 數據類型,index 索引名 (列名1,列名2)); select * from 表名 where 列名1='...' and(or) 列名2='...'

②、修改表方式創建組合索引

create table 表名 (字段1 數據類型,字段2 數據類型); alter table 表名 add primary key (列名);

5、全文索引

  • 適合在進行模糊查詢的時候使用,可用于在一篇文章中檢索文本信息。
  • 在 MySQL5.6 版本以前 fulltext 索引僅可用于 MyISAM 引擎,在 5.6 版本之后 innodb 引擎也支持 fulltext 索引。
  • 全文索引可以在 char、varchar 或者 text 類型的列上創建。每個表只允許有一個全文索引。

①、直接創建索引

create fulltext index 索引名 on 表名 (列名);

②、修改表方式指定全文索引

alter table 表名 add fulltext 索引名 (列名);

③、創建表的時候指定全文索引

create table 表名 (字段1 數據類型,字段2 數據類型,fulltext 索引名 (列名));

五、查看索引

show index from 表名; show index from 表名\G; 豎向顯示表索引信息 show keys from 表名; show keys from 表名\G;

Table表的名稱
Non_unique如果索引不能包括重復詞,則為 0;如果可以,則為 1。
Key_name索引的名稱。
Seq_in_index索引中的列序號,從 1 開始。
Column_name列名稱。
Collation列以什么方式存儲在索引中。在 MySQL 中,有值‘A’(升序)或 NULL(無分類)。
Cardinality索引中唯一值數目的估計值。
Sub_part如果列只是被部分地編入索引,則為被編入索引的字符的數目。如果整列被編入索引,則為 NULL。
Packed指示關鍵字如何被壓縮。如果沒有被壓縮,則為 NULL。
Null如果列含有 NULL,則含有 YES。如果沒有,則該列含有 NO。
Index_type用過的索引方法(BTREE, FULLTEXT, HASH, RTREE)。
Comment備注。

六、刪除索引

1、直接刪除索引

drop index 索引名 on 表名;

2、修改表方式刪除索引

alter table 表名 drop index 索引名;

3、刪除主鍵索引

alter table 表名 drop primary key;

總結

索引的作用:

  • 快速定位、加快查詢速度
  • 降低IO成本,降低排序成本
  • 通過建立合適的索引來保證業務的快速、穩定(例如唯一索引的建立,就能保證數據行的唯一性)
  • 提升表與表之間的相互連接
    • 例如:我需要在300個表中查詢一行信息,如果沒有索引,我就得一行一行找,不僅耗時間,而且每一次查詢,都會給數據庫帶來一份壓力。
    • 但如果有了索引,我們就能直接根據條件進行查詢,不需要一個表一個表的查找,會節約辦事效率,節約時間成本
    • 而且索引會根據索引類型規則進行自動排序,就省去了我們手動排序的時間

索引的副作用:

  • 索引也是表,所以會占用一定的磁盤空間
  • 因為索引和表示相連的,當我們修改表的內容時,索引也會隨之改變,索引會消耗一定的時間

創建索引的原則——根據情況,創建合適的索引

  • 主鍵、唯一鍵會自動創建索引
  • 外鍵也必須有索引,因為外鍵是子表的主鍵關連建,能更快速的定位子表內容
  • 使用唯一性較好的、更新不是很頻繁的、經常與其他表進行連接的字段作為索引
  • 經常出現在 where 語句中的字段,需要做索引,會更好的方便我們處理日常事務,節約時間成本
  • 選擇性較高的字段需要做索引
  • 超長字段,建議做全文索引,或者不建立索引

索引分類和操作

  • 索引可分為5類:
    • 普通索引
    • 唯一索引
    • 主鍵索引
    • 組合索引
    • 全文索引
  • 創建方法:
    • 直接創建索引(主鍵索引無法使用此方式)
    • 修改表結構方式添加索引
    • 創建表結構時創建索引
  • 刪除索引:
    • 直接刪除索引(drop index 索引名 on 表名;)
    • 修改表方式刪除索引(alter table 表名 drop index 索引名;)
    • 刪除主鍵索引(alter table 表名 drop primary key;)
  • 查看索引:
    • show index from 表名\G;
    • show keys from 表名\G;

面試題: mysql優化:

  • 1、提升服務性能(提高用戶/使用者的體驗度,安全)
  • 2、減少資源消耗
  • 3、對合適的字段創建索引,來加速查詢

總結

以上是生活随笔為你收集整理的Mysql数据库(四)——mysql索引相关知识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91在线综合 | 国产一区久久 | 四虎影院永久 | 另类图片亚洲色图 | 快射视频网站 | av一级网站 | 成人一区二区三区四区 | 国产精品国产三级国产在线观看 | 在线观看视频www | 色哟哟在线视频 | 国产一线二线三线在线观看 | 国产视频在线观看视频 | 久久精品偷拍视频 | 欧美综合在线视频 | 黑丝袜av | 亚洲精品成人久久 | 亚洲爱av| 爱情岛亚洲首页论坛小巨 | 91羞羞网站| 德国性经典xxxx性hd | 影音先锋黄色网址 | 四虎黄色影视 | 国产又粗又黄 | 国产另类ts人妖一区二区 | 欧美性天天 | 纯爱无遮挡h肉动漫在线播放 | 朝桐光一区二区 | 懂色av一区二区三区四区 | 被黑人啪到哭的番号922在线 | 中文字幕第5页 | 波多野结衣一二三区 | 黑人玩弄人妻一区二区绿帽子 | 午夜精品久久久久久久久久久久久 | 蜜桃免费在线视频 | 中文字幕成人在线 | 精品免费在线视频 | 国产卡一卡二卡三无线乱码新区 | 亚洲一区二区视频网站 | 天堂中文字幕在线观看 | 色偷偷免费费视频在线 | 免费三片在线观看网站v888 | 久久久久久久久久影视 | 国产巨乳在线观看 | 琪琪色网| 高清无打码| 岛国毛片在线观看 | av爱爱网站 | 最新91在线 | 国产精品免费精品一区 | 久久久精品视频在线观看 | 激情自拍偷拍 | 国产3p露脸普通话对白 | 69国产精品视频 | 成人av网站在线 | 国产夫妇交换聚会群4p | 每日更新av | 亚洲精品中文无码AV在线播放 | 精品人妻无码一区二区三区 | 亚洲国产精品成人综合色在线婷婷 | 亚洲不卡在线播放 | 天天插天天干 | 爱爱精品 | 91av福利| 国产又粗又猛又爽又黄91精品 | 亚洲人妻一区二区三区 | 福利资源导航 | 一级特黄免费视频 | 亚洲国产精品系列 | 久久久久久久网 | 欧美日韩国产精品综合 | 久久精品国产亚洲AV熟女 | 午夜精品福利一区二区三区蜜桃 | 日本三级一区二区 | 公侵犯人妻中文字慕一区二区 | 中文在线天堂网 | 亚洲理论中文字幕 | 污版视频在线观看 | 色呦呦在线 | 美女黄视频在线观看 | 精品免费在线 | 婷婷综合亚洲 | 欧美多人猛交狂配 | 日韩h在线观看 | 欧美视频在线观看视频 | 日日摸夜夜添夜夜添高潮喷水 | 免费人妻一区二区三区 | 久久亚洲精品小早川怜子 | 成人午夜一区 | 亚洲一区二区激情 | 亚洲人xxx| 亚洲 欧美 国产 另类 | www.av欧美| 综合激情四射 | www.99re.| 国产91在线免费 | 国产高清在线视频 | 神马午夜一区二区 | 强开小受嫩苞第一次免费视频 | 婷婷六月网 |