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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

MySQL 学习笔记(18)— 索引的分类、创建、查看、删除等

發布時間:2023/11/27 生活经验 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 学习笔记(18)— 索引的分类、创建、查看、删除等 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 索引類型

1.1 唯一索引與非唯一索引

唯一索引UNIQUE )中的索引值必須唯一,可以確保被索引的數據不會重復,從而實現數據的唯一性約束。

非唯一索引允許被索引的字段存在重復值,僅僅用于提高查詢的性能。

1.2 單列索引與多列索引

單列索引是基于單個字段創建的索引。例如,員工表的主鍵使用 emp_id 字段創建,就是一個單列索引。

多列索引是基于多個字段創建的索引,也叫復合索引。創建多列索引的時候需要注意字段的順序,查詢條件中最常出現的字段放在最前面,這樣可以最大限度地利用索引優化查詢的性能。

1.3 全文索引與函數索引

全文索引(Full-text),用于支持全文搜索,類似于 Google 和百度這種搜索引擎。

函數索引,基于函數或者表達式的值創建的索引。例如,員工的 email 不區分大小寫并且唯一,可以基于 UPPER(email) 創建一個唯一的函數索引。

2. 創建索引

使用 CREATE INDEX 語句創建索引,默認情況下創建的是 B+ 樹索引:

CREATE [UNIQUE] INDEX index_name 
ON table_name(col1 [ASC | DESC], ...);

其中, UNIQUE 表示創建唯一索引; ASC 表示索引按照升序排列, DESC 表示索引按照降序排列,默認為 ASC 。以下語句為表 emp_devp 的員工姓名字段創建一個普通索引:

CREATE INDEX idx_emp_devp_name ON emp_devp(emp_name);

定義主鍵和唯一約束時,數據庫自動創建相應的索引。 MySQL InnoDB 存儲引擎也會自動為外鍵約束創建索引。

3. 查看索引

MySQL 提供了 SHOW INDEXES 命令查看表的索引:

其中 PRIMARY 是系統自動為主鍵創建的索引。

4. 刪除索引

DROP INDEX 語句用于刪除一個索引:

-- Oracle 和 PostgreSQL 實現
DROP INDEX idx_emp_devp_name;

對于 MySQLSQL Server 而言,刪除索引時需要指定表名:

-- MySQL 和 SQL Server 實現
DROP INDEX idx_emp_devp_name ON emp_devp;

5. 索引缺點

既然索引可以優化查詢的性能,那么我們是不是應該將所有字段都進行索引?顯然并非如此,因為索引在提高查詢速度的同時也需要付出一定的代價。

首先,索引需要占用磁盤空間。索引獨立于數據而存在,過多的索引會導致占用大量的空間,甚至超過數據文件的大小。

其次,對數據進行 DML 操作時,同時也需要對索引進行維護;維護索引有時候比修改數據更加耗時。

總結

以上是生活随笔為你收集整理的MySQL 学习笔记(18)— 索引的分类、创建、查看、删除等的全部內容,希望文章能夠幫你解決所遇到的問題。

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