淺析mysql索引
數(shù)據(jù)庫索引是一種數(shù)據(jù)結(jié)構(gòu),目的是提高表的操作速度。可以使用一個(gè)或多個(gè)列,提供快速隨機(jī)查找和訪問記錄的高效排序來創(chuàng)建索引。
要?jiǎng)?chuàng)建的索引,應(yīng)當(dāng)認(rèn)為哪列將用于使SQL查詢,創(chuàng)建對(duì)這些列的一個(gè)或多個(gè)索引。
實(shí)際上,索引也是表,其中保存主鍵或索引字段的指針并指向每個(gè)記錄到實(shí)際的表的類型。
用戶無法看到索引,它們只是用來加速查詢,并將被用于數(shù)據(jù)庫搜索引擎在查找記錄時(shí)提高速度。
INSERT和UPDATE語句需要更多的時(shí)間來創(chuàng)建索引,作為在SELECT語句快速在這些表上操作。其原因是,在執(zhí)行插入或更新數(shù)據(jù)時(shí),數(shù)據(jù)庫需要將插入或更新索引值也更新。
簡(jiǎn)單和唯一索引
可以在表上創(chuàng)建唯一值索引。唯一索引意味著兩行不能有相同的索引值。下面是在表上創(chuàng)建索引的語法:
CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,...);
可以使用一個(gè)或多個(gè)列來創(chuàng)建索引。例如,我們可以使用tutorial_author 來創(chuàng)建一個(gè) tutorials_tbl 索引。
CREATE UNIQUE INDEX AUTHOR_INDEX ON tutorials_tbl (tutorial_author)
可以在表上創(chuàng)建一個(gè)簡(jiǎn)單的索引。創(chuàng)建簡(jiǎn)單的索引只是省略UNIQUE關(guān)鍵字。簡(jiǎn)單的索引可以在表中重復(fù)的值。
如果想索引的列的值按降序排列,可以列名之后添加保留字DESC。
mysql> CREATE UNIQUE INDEX AUTHOR_INDEX ON tutorials_tbl (tutorial_author DESC)
使用ALTER命令來添加和刪除索引
有四種類型的索引可以添加到一個(gè)表:
- ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 添加一個(gè)主鍵(PRIMARY KEY),這意味著索引值必須是唯一的,而不能為空。
- ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 創(chuàng)建一個(gè)索引的量的值必須是唯一的(除了不能使用NULL值,其它的可以出現(xiàn)多次)。
- ALTER TABLE tbl_name ADD INDEX index_name (column_list): 增加普通的索引,其中的任何值的出現(xiàn)多次。
- ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list): 創(chuàng)建一個(gè)用于文本搜索目的一種特殊的FULLTEXT索引。
下面是一個(gè)添加索引到現(xiàn)有表的例子。
mysql> ALTER TABLE testalter_tbl ADD INDEX (c);
可以通過使用 ALTER 命令以及DROP子句來刪除索引。試試下面的例子,用來刪除上面創(chuàng)建的索引。
mysql> ALTER TABLE testalter_tbl DROP INDEX (c);
使用ALTER命令來添加和刪除PRIMARY KEY
也可以用同樣的方法添加主鍵。但要在列確保主鍵正常使用,需要指定使用 NOT NULL。
下面是一個(gè)例子添加主鍵在現(xiàn)有的表。列需要添加 NOT NULL 屬性,然后再添加為一個(gè)主鍵。
mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL; mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);
可以使用ALTER命令刪除主鍵如下:
mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;
要?jiǎng)h除索引的不是主鍵,必須指定索引名。
顯示索引信息
可以使用SHOW INDEX命令,列出所有與表相關(guān)的索引。 垂直格式輸出(由\G指定),這是經(jīng)常有用的語句,以避免長(zhǎng)線概括輸出:
試試下面的例子:
mysql> SHOW INDEX FROM table_name\G ........
總結(jié)
以上所述是小編給大家介紹的mysql索引,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- MySQL中索引與視圖的用法與區(qū)別詳解
- MySQL分區(qū)字段列有必要再單獨(dú)建索引嗎?
- 詳解mysql中的冗余和重復(fù)索引
- MySQL聯(lián)合索引功能與用法實(shí)例分析
- MySql索引詳細(xì)介紹及正確使用方法
- 解決MySQL中IN子查詢會(huì)導(dǎo)致無法使用索引問題
- mysql中索引與FROM_UNIXTIME的問題
- MySQL常用的建表、添加字段、修改字段、添加索引SQL語句寫法總結(jié)
- 圖文詳解MySQL中兩表關(guān)聯(lián)的連接表如何創(chuàng)建索引
- mysql索引使用技巧及注意事項(xiàng)
- 淺談mysql的索引設(shè)計(jì)原則以及常見索引的區(qū)別
- mysql為字段添加和刪除唯一性索引(unique) 的方法
- mysql增加和刪除索引的相關(guān)操作
- MySQL索引操作命令詳解
- MySQL創(chuàng)建全文索引分享
- MySQL修改表一次添加多個(gè)列(字段)和索引的方法
- 理解MySQL——索引與優(yōu)化總結(jié)
- 詳解mysql權(quán)限和索引
相關(guān)文章
Centos6.5編譯安裝mysql 5.7.14詳細(xì)教程
這篇文章主要為大家分享了Centos6.5編譯安裝mysql 5.7.14 詳細(xì)教程,感興趣的小伙伴們可以參考一下2016-08-08MySQL多版本并發(fā)控制MVCC深入學(xué)習(xí)
這篇文章主要介紹了MySQL多版本并發(fā)控制MVCC,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2021-11-11mysql通過group?by分組取最大時(shí)間對(duì)應(yīng)數(shù)據(jù)的兩種有效方法
日常開發(fā)當(dāng)中,經(jīng)常會(huì)遇到查詢分組數(shù)據(jù)中指定的記錄,下面這篇文章主要給大家介紹了關(guān)于mysql通過group?by分組取最大時(shí)間對(duì)應(yīng)數(shù)據(jù)的兩種有效方法,文章通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09MySql如何實(shí)現(xiàn)遠(yuǎn)程登錄MySql數(shù)據(jù)庫過程解析
這篇文章主要介紹了MySql如何實(shí)現(xiàn)遠(yuǎn)程登錄MySql數(shù)據(jù)庫過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08mysql之動(dòng)態(tài)增添字段實(shí)現(xiàn)方式
這篇文章主要介紹了mysql之動(dòng)態(tài)增添字段實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05