第二十一回:缩地成寸

—— SQL INDEX (索引)
👈 上一回:外交盟约 🏠 回到大竹峰 下一回:破而后立 👉

师姐,这藏经阁里的名册堆积如山,每次找个名字都要从头翻到尾,太慢了!有没有什么“缩地成寸”的法术?

当然有。只要在名册上建立 INDEX (索引),就像书的目录一样,能让你瞬间定位到想要的内容。

🚀 急速身法:CREATE INDEX

📜 索引心法

CREATE INDEX 语句用于在表中创建索引。在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

注意: 虽然索引能加快查询速度,但会减慢更新速度(因为更新数据时也要更新索引)。所以,只在经常搜索的列上建立索引。

🧘‍♂️ 试炼一:编制目录 (单列索引)

我们要经常按“姓氏”来查找弟子,所以给 LastName 列加上索引:

CREATE INDEX idx_lastname ON Disciples (LastName);

如果你想让索引的值必须唯一(类似 UNIQUE 约束),可以用:

CREATE UNIQUE INDEX idx_email ON Disciples (Email);

🧘‍♂️ 试炼二:连环阵 (组合索引)

如果你经常同时用“门派”和“姓名”来查找(例如 WHERE Sect='...' AND Name='...'),那就建立一个组合索引

CREATE INDEX idx_sect_name ON Disciples (Sect, Name);

🗑️ 焚书坑儒:DROP INDEX

📜 销毁目录

如果索引不再需要,或者它反而拖慢了更新速度,就把它删掉。

-- MySQL (青云门) ALTER TABLE Disciples DROP INDEX idx_lastname; -- SQL Server / Oracle / PostgreSQL DROP INDEX idx_lastname;

既然索引这么好,我把所有列都加上索引岂不是飞快?

非也!索引也占用空间。若是所有列都加索引,就像给每个字都编目录,反而让书变得厚重无比,得不偿失。