一、按照數據結構分類
索引按照數據結構的分類通常可以分為哈希索引和B樹索引。哈希索引是根據關鍵字直接查找對應數據的索引方法,它通過一個哈希函數將關鍵字映射到一個桶中,從而快速定位到對應的記錄。哈希索引適用於等值查詢,但不支持範圍查詢。B樹索引是一種常見的樹狀結構索引方法,它支持範圍查詢,適用於大多數數據庫系統。B樹索引通常比哈希索引慢些,但它對磁盤的訪問更加友好。
//哈希索引示例 CREATE TABLE Users ( ID INT UNSIGNED NOT NULL AUTO_INCREMENT, Name VARCHAR(30) NOT NULL, Age INT UNSIGNED NOT NULL, Email VARCHAR(50), PRIMARY KEY (ID), INDEX(Name) ) Engine=MEMORY; //B樹索引示例 CREATE TABLE Users ( ID INT UNSIGNED NOT NULL AUTO_INCREMENT, Name VARCHAR(30) NOT NULL, Age INT UNSIGNED NOT NULL, Email VARCHAR(50), PRIMARY KEY (ID), INDEX(Name) ) Engine=InnoDB;
二、按照索引類型分類
索引按照索引類型的分類通常可以分為唯一索引和非唯一索引。唯一索引指的是表中每個索引列的值都是唯一的,它可以保證數據的一致性和完整性。非唯一索引指的是索引列中的值可以重複,它可以用於加速數據的查詢。
//唯一索引示例 CREATE TABLE Users ( ID INT UNSIGNED NOT NULL AUTO_INCREMENT, Name VARCHAR(30) NOT NULL, Age INT UNSIGNED NOT NULL, Email VARCHAR(50), PRIMARY KEY (ID), UNIQUE (Email) ) Engine=InnoDB; //非唯一索引示例 CREATE TABLE Users ( ID INT UNSIGNED NOT NULL AUTO_INCREMENT, Name VARCHAR(30) NOT NULL, Age INT UNSIGNED NOT NULL, Email VARCHAR(50), PRIMARY KEY (ID), INDEX(Name) ) Engine=InnoDB;
三、按照使用場景分類
索引按照使用場景的分類通常可以分為主鍵索引、外鍵索引和全文索引。主鍵索引是指針對表中的主鍵列建立的索引,它可以保證數據的唯一性。外鍵索引是指針對表中的外鍵列建立的索引,它可以加速該列的查詢和連接操作。全文索引是針對文本列建立的索引,它可以提高文本的搜索效率。
//主鍵索引示例 CREATE TABLE Users ( ID INT UNSIGNED NOT NULL AUTO_INCREMENT, Name VARCHAR(30) NOT NULL, Age INT UNSIGNED NOT NULL, Email VARCHAR(50), PRIMARY KEY (ID), INDEX(Name) ) Engine=InnoDB; //外鍵索引示例 CREATE TABLE Orders ( ID INT UNSIGNED NOT NULL AUTO_INCREMENT, UserID INT UNSIGNED NOT NULL, ProductID INT UNSIGNED NOT NULL, Quantity INT UNSIGNED NOT NULL, PRIMARY KEY (ID), INDEX(UserID), FOREIGN KEY (UserID) REFERENCES Users(ID) ) Engine=InnoDB; //全文索引示例 CREATE TABLE Posts ( ID INT UNSIGNED NOT NULL AUTO_INCREMENT, Title VARCHAR(100) NOT NULL, Body TEXT NOT NULL, PRIMARY KEY (ID), FULLTEXT (Title, Body) ) Engine=InnoDB;
四、按照數據類型分類
索引按照數據類型的分類通常可以分為單列索引和多列索引。單列索引針對表中的單個列建立的索引,它適用於單列查詢。多列索引針對表中多個列建立的索引,它適用於多列查詢和聯合查詢。
//單列索引示例 CREATE TABLE Users ( ID INT UNSIGNED NOT NULL AUTO_INCREMENT, Name VARCHAR(30) NOT NULL, Age INT UNSIGNED NOT NULL, Email VARCHAR(50), PRIMARY KEY (ID), INDEX(Name) ) Engine=InnoDB; //多列索引示例 CREATE TABLE Users ( ID INT UNSIGNED NOT NULL AUTO_INCREMENT, Name VARCHAR(30) NOT NULL, Age INT UNSIGNED NOT NULL, Email VARCHAR(50), PRIMARY KEY (ID), INDEX(Name, Age) ) Engine=InnoDB;
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/270879.html