【MySQL進階之路 | 高級篇】索引的聲明與使用

1. 索引的分類

MySQL的索引包括普通索引,唯一性索引,全文索引,單列索引和空間索引.

  • 從功能邏輯上說,索引主要分為普通索引,唯一索引,主鍵索引和全文索引.
  • 按物理實現方式,索引可以分為聚簇索引和二級索引.
  • 按作用字段個數進行劃分,分為單列索引和聯合索引.

(1). 普通索引

在創建普通索引時,不附加任何限制條件,只是用于提高查詢速度.這類索引可以創建在任何數據類型上,其值是否唯一或非空,要由字段本身的完整性約束條件決定.建立索引后,可以通過索引進行查詢.

(2). 唯一索引

使用UNIQUE參數可以設置唯一索引,在建立唯一索引時,限制該索引的值必須是唯一的.但允許是空值.在一張表里可以有多個唯一索引.

(3). 主鍵索引

主鍵索引是一種特殊的唯一性索引.在唯一約束的基礎上添加了非空的約束,一張表里只能有一個主鍵索引.這是由主鍵索引的物理實現方式決定的.因為數據存儲在文件中只能按照一種順序進行存儲.

(4). 聯合索引

聯合索引是在表的多個字段上創建一個索引,該索引指向創建的多個字段.可以通過幾個字段進行查詢,但查詢條件中使用這些字段的第一個字段時才會被使用.使用聯合索引時遵循最左前綴原則.

(5). 全文索引

使用參數FULLTEXT可以設置索引為全文索引.在定義索引的列上支持值的全文查找,允許在這些索引列中插入空值和重復值.全文索引只能創建在CHAR, VARCHAR, TEXT類型及其系列類型的字段上,查詢數據量較大的字符串類型的字段時,使用全文索引可以提高查詢速度.

(6). 小結

  • InnoDB : 支持b+樹,full-text等索引,不支持hash索引.
  • MyISAM : 支持b+樹,full-text等索引,不支持hash索引.
  • Memory : 支持b+樹,hash索引等,不支持b+樹.

2. 創建索引

MySQL支持多種方法在單個或多個列上創建索引,在創建表的定義語句中CREATE TABLE中指定索引列,使用ALTER TABLE語句在已經創建的表中創建索引,或者使用CREATE INDEX語句在已經存在的表中添加索引.

(1). 創建表時添加索引

CREATE TABLE demo1(
demo1_id INT PRIMARY KEY AUTO_INCREMENT,
demo_fname VARCHAR(15) UNIQUE KEY,
demp_lname VARCHAR(20),
INDEX demo1_index_lname(demp_lname)
);
  • 隱式的方式創建索引.在聲明有主鍵約束,唯一性約束,外鍵約束的字段上,會自動的添加相關的索引.
  • 顯式的方式創建普通索引.
  • 我們可以通過show index from 表名的方式來查看表中的索引.
  • 我們只能在創建表時通過定義主鍵約束的方式隱式定義主鍵約束.

(2). 創建表后添加索引

CREATE TABLE demo2(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20),
books VARCHAR(20)
);ALTER TABLE demo2 ADD INDEX demo2_index_books(books);ALTER TABLE demo2 ADD UNIQUE KEY demo2_uq_name(name);show index from demo2;

4b3b5ff9183c45c2bc737a25ac78f4be.png

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/35023.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/35023.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/35023.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

蘋果電腦清理垃圾怎么清理 macbook怎么清理電腦垃圾文件 macos優化軟件 cleanmymac怎么使用

在選擇電腦時,不少人都會選擇擁有高性能和輕薄機身的mac。一開始,它確實如我們所期待的那樣健步如飛,然而,隨著時間的流逝,有沒有覺得您的Mac有時候像是需要一個好的春季大掃除一樣?隨著我們不斷使用電腦&a…

Lobe Chat openai claude

claude-3-5-sonnet-20240620 $ docker run -d -p 3210:3210 \-e OPENAI_API_KEYsk-xxxx \-e OPENAI_PROXY_URLhttps://api-proxy.com/v1 \-e ACCESS_CODElobe66 \--name lobe-chat \lobehub/lobe-chatDocker 部署 更新 docker ps CONTAINER ID IMAGE …

1590. 【中山市第十二屆義務教育段學生信息學邀請賽】除法運算(divide)

時間限制: 1 s 空間限制: 256 MB 題目描述 Jimmy 開始學習除法啦!一開始他學習了余數為 0 的除法(也就是我們常說的整除),后來又學習了余數不為 0 的除法,所以 Jimmy 對被除數、除數、商、余數這些概念都已經了如指…

C語言學習步驟

C語言學習步驟 學習C語言是一個系統化的過程,以下是一些基本的步驟和建議: 1. 理解基礎概念:首先,了解編程的基本概念,比如變量常量、數據類型、指針、控制結構(順序語句、分支語句、循環語句)、…

神經網絡參數-----學習率(Learning Rate)

學習率 學習率是訓練神經網絡的重要超參數之一,它代表在每一次迭代中梯度向損失函數最優解移動的步長。它的大小決定網絡學習速度的快慢。在網絡訓練過程中,模型通過樣本數據給出預測值,計算代價函數并通過反向傳播來調整參數。重復上述過程…

Geoserver源碼解讀四 REST服務

文章目錄 文章目錄 一、概要 二、前置知識點-FreeMarker 三、前置知識點-AbstractHttpMessageConverter 3.1 描述 3.2 應用 四、前置知識點-AbstractDecorator 4.1描述 4.2 應用 五、工作空間查詢解讀 5.1 模板解讀 5.2 請求轉換器解讀 一、概要 關于geoserver的r…

zabbix-agent2啟動失敗報錯Unit zabbix-agent2.service entered failed state.

文章目錄 1,用systemctl status zabbix-agent2查看報錯狀態2,用journalctl -xe查看一下報錯日志3,再看一下zabbix的日志。4,錯誤修改5, 再次重啟zabbix-agent2 1,用systemctl status zabbix-agent2查看報錯…

高考季-計算機相關專業與所學核心課程介紹以及高考報考學校推薦

計算機相關專業通常包括計算機科學與技術、軟件工程、信息安全、網絡工程、人工智能等。以下是對這些專業的詳細介紹、所學課程內容以及一些推薦的學校和專業。 1. 計算機科學與技術 專業介紹 計算機科學與技術是研究計算機系統及其相關技術的學科,包括計算機硬件…

ref與reactive

在Vue 3中,ref 和 reactive 是兩種用于創建響應式狀態的API。它們在實現方式和使用場景上有所不同。下面是對 ref 和 reactive 的深度解析: 1. ref 解析 ref 用于創建一個單一的響應式引用,可以用來包裹基本類型(如字符串、數字…

Word如何在頁眉中插入和刪除橫線

你平常是否遇見到Word的頁眉中有一條橫線,怎么也刪不了!!! 今天劉小生分享如何在頁眉中插入和刪除橫線,我們一起操練起來吧! 1、Word頁眉插入橫線 選擇【插入】-【頁眉頁腳】,在“頁眉頁腳”…

00_Python核心編程

Python入門 一 Python初識 1 Python的歷史 Python的歷史python是蟒蛇的含義python是一種解釋型的,面向對象的,帶有動態語義的高級程序設計語言. python是一種使你在編程時能夠保持自己的風格的程序設計語言,你不用費什么勁就可以實現你想要的功能,并且編寫的程序清晰易懂. …

ArcGIS Pro SDK (五)內容 5 元數據

ArcGIS Pro SDK (五)內容 5 收藏夾 目錄 ArcGIS Pro SDK (五)內容 5 收藏夾1 獲取其 IMetadata 接口2 獲取項目的元數據:獲取XML3 設置項目的元數據:設置XML項4 檢查元數據是否可以編輯:可以編輯…

可靠性評估的概念和流程

可靠性評估的概念和流程 可靠性評估是系統工程中的一項重要任務,它旨在確定系統的可靠性和預期的運行時間,以便進行設計優化和維護決策。其概念和流程通常涉及以下幾個關鍵要素: 可靠性模型: 可靠性模型是描述系統或組件性能的…

常見的排序算法【總結】

目錄 排序的基本概念與分類排序的穩定性內排序與外排序簡單排序冒泡排序時間復雜度: O ( n 2 ) O(n^2) O(n2) 簡單選擇排序排序原理:時間復雜度: O ( n 2 ) O(n^2) O(n2) 插入排序排序原理:時間復雜度: O ( n 2 ) O(n^…

晶方科技:臺積電吃飽,封裝迎春?

半導體產業鏈掀起漲價潮,先進封裝迎接利好。 這里我們來聊國內先進封裝企業——晶方科技。 近期,由于產能供不應求,臺積電決定上調先進封裝產品價格,還表示訂單已經排到2026年。 大哥吃不下了,剩下的訂單全都是空間。…

主線程和子線程

主線程 當Java程序啟動時,一個線程會立刻運行,該線程通常叫做程序的主線程(main thread),即main方法對應的線程,它是程序開始時就執行的。 Java應用程序會有一個main方法,是作為某個類的方法出…

JDK 23:Loom改進版發布

1.新版 Loom EA 改進虛擬線程中的監視器(同步方法) Project Loom 發布了新的搶先體驗版本(23-loom4-102 - 2024/5/31)。改進了對象監視器實現,可以防止虛擬線程在以下情況下固定其載體線程: 當進入同步方法/語句時發生阻塞&…

問題-python-爬蟲無法爬取外網資源問題(python爬蟲)

方法一: 這個報錯通過關掉梯子就能解決,目前不清楚具體原理。 后續了解具體原理了,我會在這篇文章上更新具體分析—— 方法二: 也可以把這個東西打開,但是用完建議關掉。

python無法安裝scipy怎么辦

python安裝scipy時出現以下錯誤&#xff1a; from scipy.misc import imread Traceback (most recent call last):File "D:/Pyproject/qq_Spider/create_cloud.py", line 14, in <module>from scipy.misc import imread ModuleNotFoundError: No module named …

淺析Kubernetes的權限控制模型

Kubernetes是一個開源的容器編排引擎&#xff0c;用來對容器化應用進行自動化部署、擴縮和管理。它是一個強大的集群管理系統&#xff0c;提供了豐富的功能。他的一個核心組件是Kubernetes API Server&#xff0c;這是集群中所有資源管理的入口點&#xff0c;提供了一組RESTful…