MySQL是一款著名的關系型數據庫管理系統,其中索引方法可以分為兩類:Btree(B樹)和Hash(哈希)。
Btree是一種常見的索引結構,常用于處理范圍查詢。在MySQL中,Btree索引包括聚集索引和非聚集索引。聚集索引是MySQL中表中主鍵的默認索引,通過Btree存儲,它的樹的葉子節點存儲完整的數據行,使用主鍵進行查詢時搜索效果最優。而非聚集索引則是根據非主鍵字段生成的索引,同樣使用Btree算法實現。當查詢中沒有使用到主鍵時,非聚集索引可以成為起到加速查詢效果的作用。
CREATE TABLE `example` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name_age_index` (`name`,`age`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
上述SQL示例中,主鍵id被設置為聚集索引,而name和age字段則是非聚集索引。你還可以使用以下代碼段來在查詢數據時提高效率:
SELECT * FROM `example` WHERE `name` = 'Tom';
Hash索引使用哈希表實現,它可以快速定位數據,但無法處理范圍查詢,僅僅支持精確查找。在MySQL中,Hash索引可以使用Memory引擎或是NDB引擎創建。
CREATE TABLE `example` (
`id` int(11) NOT NULL,
`name` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name_index` (`name`) USING HASH
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb4;
因為Hash索引不能處理范圍查找,它更適合在存儲量不太大的表上使用。如果你需要更高效的查找方法,可以嘗試使用Btree索引。