mysql資料庫的索引類型

2020-12-14 linux運維菜

MySQL索引類型:

1、普通索引

最基本的索引,它沒有任何限制,用於加速查詢。

創建方法:

a. 建表的時候一起創建

CREATE TABLE mytable ( name VARCHAR(32) , INDEX index_mytable_name (name) );

b. 建表後,直接創建索引

CREATE INDEX index_mytable_name ON mytable(name);

c. 修改表結構

ALTER TABLE mytable ADD INDEX index_mytable_name (name);

註:如果是字符串欄位,還可以指定索引的長度,在列命令後面加上索引長度就可以了(例如:name(11))

2、唯一索引

索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。

創建方法:

a. 建表的時候一起創建

CREATE TABLE mytable ( `name` VARCHAR(32) , UNIQUE index_unique_mytable_name (`name`) );

b. 建表後,直接創建索引

CREATE UNIQUE INDEX index_mytable_name ON mytable(name);

c. 修改表結構

ALTER TABLE mytable ADD UNIQUE INDEX index_mytable_name (name);

註:如果是字符串欄位,還可以指定索引的長度,在列命令後面加上索引長度就可以了(例如:name(11))

3、主鍵索引

是一種特殊的唯一索引,一個表只能有一個主鍵,不允許有空值。一般是在建表的時候同時創建主鍵索引。

創建方法:

a. 建表的時候一起創建

CREATE TABLE mytable ( `id` int(11) NOT NULL AUTO_INCREMENT , `name` VARCHAR(32) , PRIMARY KEY (`id`) );

b. 修改表結構

ALTER TABLE test.t1 ADD CONSTRAINT t1_pk PRIMARY KEY (id);

註:如果是字符串欄位,還可以指定索引的長度,在列命令後面加上索引長度就可以了(例如:name(11))

4、組合索引

指多個欄位上創建的索引,只有在查詢條件中使用了創建索引時的第一個欄位,索引才會被使用。使用組合索引時遵循最左前綴集合。

創建方法:

a. 建表的時候一起創建

CREATE TABLE mytable ( `id` int(11) , `name` VARCHAR(32) , INDEX index_mytable_id_name (`id`,`name`) );

b. 建表後,直接創建索引

CREATE INDEX index_mytable_id_name ON mytable(id,name);

c. 修改表結構

ALTER TABLE mytable ADD INDEX index_mytable_id_name (id,name);

5、全文索引

主要用來查找文本中的關鍵字,而不是直接與索引中的值相比較。

fulltext索引跟其它索引大不相同,它更像是一個搜尋引擎,而不是簡單的where語句的參數匹配。

fulltext索引配合match against操作使用,而不是一般的where語句加like。

它可以在create table,alter table ,create index使用,不過目前只有char、varchar,text 列上可以創建全文索引。

創建方法:

a. 建表的時候一起創建

CREATE TABLE `article` ( `id` int(11) NOT NULL AUTO_INCREMENT , `title` char(250) NOT NULL , `contents` text NULL , `create_at` int(10) NULL DEFAULT NULL , PRIMARY KEY (`id`), FULLTEXT (contents) );

b. 建表後,直接創建索引

CREATE FULLTEXT INDEX index_article_contents ON article(contents);

c. 修改表結構

ALTER TABLE article ADD FULLTEXT INDEX index_article_contents (contents);

總結

雖然索引可以增加查詢數據,但對於更新、創建或者刪除的時候,需要去維護索引,導致性能會受影響,因此,索引也不能建立太多。

相關焦點

  • 考前複習必備MySQL資料庫(關係型資料庫管理系統)
    InnoDB 數據表的索引限制索引類別普通索引,普通索引(由關鍵字 KEY 或 INDEX 定義的索引)的任務是加快對數據的訪問速度。索引,普通索引允許被索引的數據列包含重複的值。主索引,必須為主鍵欄位創建一個索引,這個索引就是所謂的「主索引」。
  • MYSQL資料庫操作案例
    MySQL 創建資料庫CREATE DATABASE 資料庫名;以下命令簡單的演示了創建資料庫的過程,數據名為 RUNOOB:[root@host]# mysql -u root -p >例如刪除名為 RUNOOB 的資料庫:mysql> drop database RUNOOB;MySQL 選擇資料庫以下實例選取了資料庫 RUNOOB:[root@host]# mysql -u root -p
  • MySQL資料庫及應用
    Document.Write("HelloWorld");D. write(「HelloWorld」);5 單選 連接 MySQL 資料庫的正確方法是A. mysql_open("localhost");B. mysql_connect("localhost
  • 千萬級MySQL資料庫這樣建索引可以讓你的資料庫飛起來
    另外,過多的複合索引,在有單欄位索引的情況下,一般都是沒有存在價值的;相反,還會降低數據增加刪除時的性能,特別是對頻繁更新的表來說,負面影響更大。總的來說,小型表肯定不建索引,或者資料庫記錄在億條數據級以上,還是建議使用非關係型資料庫。
  • MySQL 的索引是什麼?怎麼優化?
    索引類似大學圖書館建書目索引,可以提高數據檢索的效率,降低資料庫的IO成本。MySQL在300萬條記錄左右性能開始逐漸下降,雖然官方文檔說500~800w記錄,所以大數據量建立索引是非常有必要的。MySQL提供了Explain,用於顯示SQL執行的詳細信息,可以進行索引的優化。1.硬體問題。如網絡速度慢,內存不足,I/O吞吐量小,磁碟空間滿了等。
  • 面對MySQL 查詢索引失效,程式設計師的六大優化技巧!
    第四步優化器:優化器是資料庫的一個核心子系統,你也可以把他理解為 MySQL 資料庫中的一個核心模塊或者一個核心功能模塊。優化器的目的是按照一定原則來得到它認為的目標SQL在當前情形下最有效的執行路徑,優化器的目的是為了得到目標SQL的執行計劃。經過分析器,mysql就知道你要做什麼了。
  • Mysql資料庫的使用方法
    一、資料庫的基本概念1、 常用的兩種引擎: (1) InnoDB引擎:        1)支持ACID,簡單地說就是支持事務完整性、一致性;        2)支持行鎖,以及類似ORACLE的一致性讀,多用戶並發;        3)獨有的聚集索引主鍵設計方式,可大幅提升並發讀寫性能;
  • Mysql中in到底走不走索引?
    當前找工作,對於一定年限的軟體開發者,都會被問到索引的相關問題,最近我發現對於mysql資料庫中in關鍵字走不走索引,有很多面試者回答的都不貼切
  • MySQL索引與索引優化
    索引是對資料庫表中一個或多個列的值進行排序的結構,建立索引有助於快速獲取信息。你也可以這樣理解:索引就是加快檢索表中數據的方法。資料庫的索引類似於書籍的索引。在書籍中,索引允許用戶不必翻閱完整個書就能迅速地找到所需要的信息。在資料庫中,索引也允許資料庫程序迅速地找到表中的數據,而不必掃描整個資料庫。
  • 深入淺出資料庫索引
    3.索引列排序mysql查詢只使用一個索引,因此如果where子句中已經使用了索引的話,那麼order by中的列是不會使用索引的。因此資料庫默認排序可以符合要求的情況下不要使用排序操作,儘量不要包含多個列的排序,如果需要最好給這些列建複合索引。
  • 什麼是 MySQL 索引?
    在關係型資料庫中,索引是一種單獨的、物理的對資料庫表中一列或多列的值進行排序的一種存儲結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的數據頁的邏輯指針清單(定義真特麼拗口)。大白話意思是索引的作用相當於圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。 一個索引是存儲的表中一個特定列的值數據結構。
  • 重新學習Mysql資料庫1:無廢話MySQL入門
    MySQL 為關係型資料庫(Relational Database Management System),一個關係型資料庫由一個或數個表格組成, 如圖所示的一個表格:表頭(header): 每一列的名稱;列(col): 具有相同數據類型的數據的集合;行(row): 每一行用來描述某個人/物的具體信息;值(value): 行的具體信息
  • PHP資料庫編程之MySQL優化策略概述
    2、如果我們們經對資料庫中的數據行進行增刪,那麼會出現數據ID過大的情況,用ALTER TABLE tablename AUTO_INCREMENT=N,使自增ID從N開始計數。3、對int類型添加 ZEROFILL 屬性可以對數據進行自動補04、導入大量數據時最好先刪除索引再插入數據,再加入索引,不然,mysql會花費大量時間在更新索引上。
  • 單個ibdata1文件包含MySQL資料庫中的所有表和索引
    在本教程中,我們將說明如何重建整個MySQL資料庫,以及如何將較大的MySQL系統表空間文件分解為較小的單個MySQL表文件。在MySQL中,當您使用InnoDB時,所有表和索引都存儲在MySQL系統表空間下。MySQL系統表空間是ibdata1,位於/ var / lib / mysql下
  • 如何查看 sql 查詢是否用到索引 ( mysql )
    修改指定資料庫中所有varchar類型的表欄位的字符集為ut8mb4,並將排序規則修改為utf8_unicode_ciSELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY `', column_name, '` ', DATA_TYPE, '(', CHARACTER_MAXIMUM_LENGTH
  • 「資料庫分享」MySQL資料庫優化
    首先在優化性能之前,我們需要懂得了解一些關於資料庫索引內容/需要了解索引是什麼,怎麼去使用,有啥子原則規範等內容...如果你還不懂索引,就暫時先去翻翻新華字典。具有唯一性的列,索引效果好;重複值較多的列,索引效果差。如果為字符串類型創建索引,最好指定一個前綴長度,創建短索引。
  • MySQL操作之索引創建與刪除
    本文介紹MySQL資料庫的索引創建與刪除。,使用varchar類型比char類型要有優勢。對於大表而言,使用char數據類型的每個索引長度都是固定值,空格也算在索引的長度裡面,而varchar不是。所以葉子結點的消耗較大,因而要選擇varchar數據類型索引的命令操作索引查詢PRI 主鍵索引MUL 輔助索引UNI 唯一索引
  • 「詳細」MySQL資料庫與JDBC編程
    (MySQL不支持)CREATE TABLE 表名( key INT, CHECK(key>10) );索引(一個資料庫對象)創建索引的唯一作用是加速對表的查詢,索引通過使用快速路徑訪問方法來快速定位數據,從而減少了磁碟的I/0。
  • 了解資料庫類型及MySQL資料庫常用命令行
    一、資料庫1、資料庫DataBase(DB):存儲數據的倉庫。2、資料庫的分類(1) 關係型資料庫(sql資料庫):中型:mysql(埠號3306)、sql server大型:Oracle(埠號1521)(2) 非關係型資料庫(no-sql資料庫)
  • 24個經典MySQL索引問題,面試學習必看
    什麼是索引?索引是一種特殊的文件(InnoDB數據表上的索引是表空間的一個組成部分),它們包含著對數據表裡所有記錄的引用指針。索引是一種數據結構。資料庫索引,是資料庫管理系統中一個排序的數據結構,以協助快速查詢、更新資料庫表中數據。索引的實現通常使用B樹及其變種B+樹。