一、按照數據結構分類
索引按照數據結構的分類通常可以分為哈希索引和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
微信掃一掃
支付寶掃一掃