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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql 创建唯一索引_Mysql创建索引

發(fā)布時間:2025/3/21 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 创建唯一索引_Mysql创建索引 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

零:文章概要

這篇文章,主要是和大家一起去了解 索引,然后一起使用CREATE INDEX語法給數據庫中的表創(chuàng)建一個索引。

一:先拿電話薄做個類比

假如,一個電話薄里面包含了一個城市的所有人的姓名和電話號碼。那么,想找到Bob Cat的電話號碼,另外我們知道電話簿中名字是按照字母順序排列的,所以首先要查找姓氏為Cat的頁面,然后在這個頁面下查找名字為Bob的電話號碼。

那如果在電話薄中的名字沒有按照字母排列,就需要去瀏覽所有的頁,然后在里面查找每個姓名直到找到Bob Cat,這種是查找了所有的電話頁,所以在時間上還是挺費時的。

那我們將電話簿與數據庫表聯系起來,如果有一個電話簿表然后要找到Bob Cat的電話號碼,則可以執(zhí)行以下查詢:

SELECTphone_number FROM phone_book WHERE first_name = 'Bob' AND last_name = 'Cat';

這個寫起來很容易,在數據量不大的時候查詢速度很快,但數據庫必須掃描表的所有行,直到找到該行為止,如果表有數百萬行而沒有索引時,則檢索數據會耗費很多的時間。

二:索引的介紹

索引是一種數據結構,例如B-Tree,這種數據結構是需要額外的寫入和存儲為代價來提高表上數據檢索的速度。一旦建立了索引后,數據庫中查詢優(yōu)化器使用索引來快速定位數據,然后就無需掃描表中給定查詢的每一行了。

其中。當使用主鍵或唯一鍵創(chuàng)建表時,MySQL會自動創(chuàng)建名為PRIMARY的特殊索引, 該索引稱為聚簇索引。PRIMARY索引是比較特殊的,這個索引本身與數據一起存儲在同一個表中。另外除PRIMARY索引之外的其他索引稱為二級索引或非聚簇索引。

三:MySQL CREATE INDEX語句

通常,創(chuàng)建表的時候就能為表創(chuàng)建索引。 例如,以下語句創(chuàng)建一個新表,并創(chuàng)建了是由兩列c2和c3組成的索引。

CREATE TABLE t(c1 INT PRIMARY KEY,c2 INT NOT NULL,c3 INT NOT NULL,c4 VARCHAR(10),INDEX (c2,c3) );

但是要為列或一組列添加索引,可以使用CREATE INDEX語句,如下所示:

CREATE INDEX index_name ON table_name (column_list)

要為列創(chuàng)建索引,要指定索引名稱,索引所屬的表以及列。

例如,要為列c4添加新索引,請使用以下語句:

CREATE INDEX idx_c4 ON t(c4);

默認情況下,如果未指定索引類型,MySQL將創(chuàng)建B-Tree索引。 以下顯示了基于表的存儲引擎的允許索引類型:

四:MySQL CREATE INDEX 舉例

以下語句查找職位為Sales Rep的員工:

SELECT employeeNumber, lastName, firstName FROMemployees WHEREjobTitle = 'Sales Rep';

這里數據返回了17行,表明17名員工的職位是銷售代表。

那我們要查看MySQL如何在內部執(zhí)行此查詢,可以在SELECT語句的開頭添加EXPLAIN子句,會得到下面的結果:

可以看到,MySQL必須掃描包含23行的整個表,以查找具有Sales Rep職位的員工。

現在,讓我們使用CREATE INDEX語句為jobTitle列創(chuàng)建一個索引:

CREATE INDEX jobTitle ON employees(jobTitle);

并再次執(zhí)行上述語句:

EXPLAIN SELECT employeeNumber, lastName, firstName FROMemployees WHEREjobTitle = 'Sales Rep';

這時候看到,MySQL只需要在鍵列中指示的jobTitle索引中找到17行而不掃描整個表。

如果要顯示表的索引,可以使用下SHOW INDEXES語句,例如:

SHOW INDEXES FROM employees;

返回結果如下的索引

image.png

這篇文章中我們介紹了MySQL索引以及如何為表中的列添加索引,希望大家可根據文末提供的數據源來自己敲寫代碼

翻譯參考:

1.Mysql創(chuàng)建索引

2.文章使用的數據源

《新程序員》:云原生和全面數字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的mysql 创建唯一索引_Mysql创建索引的全部內容,希望文章能夠幫你解決所遇到的問題。

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