TwKit
正在载入
TwKit

数据库索引会额外保存一套便于查找的数据结构。比如按邮箱查用户,没有合适的索引时,数据库可能需要逐行扫描;给 email 列建索引后,就有机会先定位匹配项,再… · @BaiBtw · TwKit

@BaiBtw

数据库索引会额外保存一套便于查找的数据结构。比如按邮箱查用户,没有合适的索引时,数据库可能需要逐行扫描;给 email 列建索引后,就有机会先定位匹配项,再读取对应记录。 在 PostgreSQL 中,可以用 CREATE INDEX users_email_idx ON users(email); 建立这个索引。建好后,查询规划器仍会比较执行成本:有索引,不代表每次查询都会使用它,也不保证查询一定降到毫秒级。 索引占用额外空间,数据变化时还要同步维护,因此也会增加写入开销。它也不只服务于 SELECT:带筛选条件的 UPDATE、DELETE,以及关联查询,都可能受益。真正要权衡的是哪些查询经常发生、能少读多少数据,以及维护这些索引要付出多少成本。 建索引本身也有成本。PostgreSQL 默认建索引期间允许读取,但会阻塞写入;大表可能耗时较长,并发建索引则有额外限制。

曝光 148 · 评论 0 · 点赞 3 · 书签 0

查看原帖