最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中的索引創(chuàng)建及應(yīng)用

 更新時間:2026年01月22日 16:17:55   作者:極客編程坊  
文章介紹了MySQL中索引的概念、用途、弊端、應(yīng)用場景以及創(chuàng)建、刪除索引的方法,還詳細(xì)講解了索引的分類,包括邏輯應(yīng)用維度、物理存儲維度和數(shù)據(jù)存儲結(jié)構(gòu)維度,最后,文章還分析了MySQL中索引的存儲結(jié)構(gòu),本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

MySQL中的索引應(yīng)用

索引的定義

  • 什么是索引(Index)?

官方的定義索引是一種數(shù)據(jù)結(jié)構(gòu),從生活維度講,假如將一本書看成是一張表,這本書的目錄就是表中的索引.

  • 為什么要使用索引(Index)

數(shù)據(jù)量比較大時,為了快速找到們需要的數(shù)據(jù)可以使用索引,這樣可以提高查詢的效率.

  • 索引(Index)有什么弊端?
  1. 會額外的占用空間
  2. 對更新操作會帶來一定的復(fù)雜度.
  • 使用索引(Index)的應(yīng)用場景?
  1. on 子句
  2. where 子句
  3. group by 子句
  4. having 子句
  5. order by 子句

索引的分類

  • 邏輯應(yīng)用維度 (主鍵,普通,聯(lián)合,唯一,空間索引,…)
  • 物理存儲維度 (聚簇索引,非聚簇索引)
  • 數(shù)據(jù)存儲結(jié)構(gòu)維度(hash,B+樹,…)

索引創(chuàng)建及應(yīng)用

  • 如何查看表中的索引?

show index from student;

  • 如何創(chuàng)建索引?
  1. 創(chuàng)建表的同時創(chuàng)建索引.(例如 create table tablename(…,index 索引名 (字段名)))
  2. 創(chuàng)建表后通過create語句創(chuàng)建索引(例如 create index 索引名 on 表名(字段名))
  3. 創(chuàng)建表后通過alter語句創(chuàng)建索引(例如 alter table add index 索引名(字段名))
  • 創(chuàng)建普通索引案例分享.
create index index_first_name on student(first_name);
alter table student add index index_last_name (last_name);
  • 創(chuàng)建唯一索引案例分享
create unique index index_first_name on student(first_name);
alter student add unique index index_first_name (last_name)
  • 創(chuàng)建組合索引案例分享
create index index_first_last on student(first_name,last_name);
alter table student add index index_first_last (first_name,last_name);
  • 如何刪除索引?

drop index 索引名 on 表名;

例如

drop index index_first_last on student;

索引存儲結(jié)構(gòu)分析

  • MySQL中索引支持哪些存儲結(jié)果?
  • hash,B+樹,…
  • MySQL中InnoDB默認(rèn)的索引存儲結(jié)構(gòu)是什么?
  • B+樹
  • MySQL中的B+樹有什么特點?
  1. 樹中的非葉子節(jié)點只存儲索引和指針
  2. 樹中的葉子節(jié)點存儲索引和數(shù)據(jù)
  3. 樹中的葉子節(jié)點處于相同層,并且之間會使用雙向鏈表連接,可以更好的支持范圍查詢.

  • MySQL中B+樹相對于B樹有什么優(yōu)點?
  1. 一個磁盤可以存儲索引數(shù)量會更多.
  2. 相同數(shù)據(jù)量的B+樹相對于B樹的高度相對會比較低(因為分叉多了)
  3. 葉子節(jié)點之間B+樹有雙向鏈表的連接,可以支持快速的范圍查詢.
  • 你覺得Hash索引有什么優(yōu)勢和劣勢?
  • hash索引查詢效率比較高,但是不支持范圍查詢.

聚簇索引和非聚簇索引

  • 什么是聚簇索引?

聚簇索引也叫聚集索引,索引和數(shù)據(jù)存儲在一起,也就是索引與數(shù)據(jù)是不分離。
InnoDB存儲引擎就是聚簇索引。

  • 聚簇索引都有哪些類型?

InnoDB中,一張表只有一個聚集索引(即主鍵索引),其他索引都是二級索引。
在實際應(yīng)用中我們可以直接通過主鍵聚集索引查詢到具體記錄。假如是二級索引,這個
索引中存儲是索引以及對應(yīng)主鍵,我們使用二級索引執(zhí)行查詢時,是先基于二級索引找
到主鍵,再基于主鍵去查詢具體記錄(這個過程是回表查詢)。

select first_name,salary
from employees
where employee_id=206

create index index_hire_date on employees(hire_date);
select first_name,salary,email
from employees
where hire_date='1987-07-09'

create index index_hire_date_salary on employees(hire_date,salary);
select first_name,salary,email
from employees
where hire_date='1987-07-09' and salary<8000
  • 什么是非聚簇索引?
    非聚簇索引是索引與數(shù)據(jù)是分離的,索引和數(shù)據(jù)是單獨存儲的。MyISAM存儲引擎是非聚簇索引。

例如:

[10,0x1001] 0x1001表示記錄地址
[12,0x1002]
0x1001 [10,Jack,J@t.com]
0x1002 [12,Mike,M@t.com]
  • 非聚簇索引存儲的是什么?

非聚簇索引在創(chuàng)建時,存儲的是索引值以及索引對應(yīng)的記錄的地址。
基于非聚簇索引查詢數(shù)據(jù)時,可以先基于索引找到數(shù)據(jù)的一個地址,然后基于地址再去查找數(shù)據(jù)。
單從索引角度來說,非聚集索引查找速度不如聚集索引,非聚集索引找到索引位置后還需要根據(jù)索引找到數(shù)據(jù)對應(yīng)的位置

到此這篇關(guān)于MySQL中的索引創(chuàng)建及應(yīng)用的文章就介紹到這了,更多相關(guān)mysql索引應(yīng)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入談?wù)凪ySQL中的自增主鍵

    深入談?wù)凪ySQL中的自增主鍵

    這篇文章主要給大家介紹了關(guān)于MySQL中自增主鍵的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • mysql中in操作符的用法詳解

    mysql中in操作符的用法詳解

    IN 是 MySQL 中用于多值篩選的高效操作符,常用于 WHERE 子句,可替代多個 OR 條件,簡化查詢邏輯并提升可讀性,這篇文章主要介紹了mysql中in操作符的用法詳解,需要的朋友可以參考下
    2025-07-07
  • Mysql之索引長度限制方式

    Mysql之索引長度限制方式

    這篇文章主要介紹了Mysql之索引長度限制方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • CentOS 5.5下安裝MySQL 5.5全過程分享

    CentOS 5.5下安裝MySQL 5.5全過程分享

    網(wǎng)絡(luò)上有很多相關(guān)的安裝筆記,但是并不詳盡,或是編譯環(huán)境稍有不同,過程就會有差異,所以我總結(jié)了已有的經(jīng)驗和我自己安裝過程中的體驗,擴(kuò)充并詳盡地記錄了整個過程。我選擇安裝的是MySQL5.5.27版本。以下是我的安裝筆記
    2012-09-09
  • MySQL不使用子查詢的原因及優(yōu)化案例

    MySQL不使用子查詢的原因及優(yōu)化案例

    對于mysql,不推薦使用子查詢,效率太差,執(zhí)行子查詢時,MYSQL需要創(chuàng)建臨時表,查詢完畢后再刪除這些臨時表,所以,子查詢的速度會受到一定的影響,本文給大家詳細(xì)介紹了MySQL不使用子查詢的原因及優(yōu)化案例,需要的朋友可以參考下
    2025-01-01
  • MySQL聯(lián)合索引功能與用法實例分析

    MySQL聯(lián)合索引功能與用法實例分析

    這篇文章主要介紹了MySQL聯(lián)合索引功能與用法,結(jié)合具體實例形式分析了聯(lián)合索引的概念、功能、具體使用方法與相關(guān)注意事項,需要的朋友可以參考下
    2017-09-09
  • MySQL使用觸發(fā)器如何實現(xiàn)CHECK檢查約束的功能

    MySQL使用觸發(fā)器如何實現(xiàn)CHECK檢查約束的功能

    這篇文章主要介紹了MySQL使用觸發(fā)器如何實現(xiàn)CHECK檢查約束的功能,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • MySQL如何查看數(shù)據(jù)庫連接數(shù)

    MySQL如何查看數(shù)據(jù)庫連接數(shù)

    本文介紹了在MySQL中查看數(shù)據(jù)庫連接數(shù)的多種方法,包括使用SHOWSTATUS命令、查詢information_schema數(shù)據(jù)庫、使用SHOWPROCESSLIST命令、查看最大連接數(shù)以及使用性能模式,每個方法都有詳細(xì)的示例和注意事項,幫助你有效地監(jiān)控和管理數(shù)據(jù)庫連接
    2024-11-11
  • MySQL報錯:Starting MySQL ERROR! Couldn‘t find MySQL server (/usr/local/mysql/bin/mysqld_safe)

    MySQL報錯:Starting MySQL ERROR! Couldn‘t f

    本文主要介紹了MySQL報錯:Starting MySQL ERROR! Couldn‘t find MySQL server (/usr/local/mysql/bin/mysqld_safe)
    2024-03-03
  • Mysql動態(tài)更新數(shù)據(jù)庫腳本的示例講解

    Mysql動態(tài)更新數(shù)據(jù)庫腳本的示例講解

    今天小編就為大家分享一篇關(guān)于Mysql動態(tài)更新數(shù)據(jù)庫腳本的示例講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12

最新評論

江孜县| 荥经县| 贵定县| 垣曲县| 延长县| 胶南市| 宝鸡市| 武汉市| 闻喜县| 杭锦后旗| 女性| 林甸县| 永福县| 金阳县| 昂仁县| 板桥市| 高安市| 水城县| 大渡口区| 邵武市| 长葛市| 黔江区| 桓仁| 乃东县| 永善县| 吴忠市| 广汉市| 平和县| 宜兴市| 临夏市| 彭州市| 乌兰察布市| 霍州市| 六盘水市| 兴国县| 会昌县| 夹江县| 读书| 襄城县| 陇西县| 巩义市|