sql - PostgreSQL 索引——这些是多余的吗?

标签 sql postgresql indexing

CREATE INDEX alias_pub_idx2
  ON info.palias
  USING btree
  (publisher_id, player_id, pub_player_id);

CREATE INDEX alias_pub_idx3
  ON info.palias
  USING btree
  (player_id);

第一个包括三列;后者只包括一个。我认为它们是多余的——第一个 btree 索引就足够了,但我不太熟悉 PostgreSQL 索引方法。想法?

最佳答案

PostgreSQL 多列索引是“有序的”,这意味着只有当 player_idalias_pub_idx2 中提到的第一列时,这才是多余的。

然而,这将是多余的:

CREATE INDEX alias_pub_idx2
  ON info.palias
  USING btree
  (publisher_id, player_id, pub_player_id);

CREATE INDEX alias_pub_idx3
  ON info.palias
  USING btree
  (publisher_id); /* first column of another index => waste of space */

关于sql - PostgreSQL 索引——这些是多余的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3526624/

相关文章:

sql - Postgres : how to call a function that returns a table and pass params from a query

sql - PostgreSQL 如何禁用计划缓存来修复我的 base62 哈希?

postgresql - 在这种情况下,为什么 Postgresql 不对我的复合索引使用 Index Only Scan?

mysql - 从 .sql 文件创建表时出现问题

SQL/Postgresql 如何对列进行分组,但根据某些条件查找另一列的平均值

swift - 阿拉莫菲尔后下一个瓦尔

sql-server - 我应该在事实表上创建聚集索引吗?绝不?总是?

indexing - 使用 Sequelize 在单个迁移中创建表并添加索引

sql - 为什么这个 SQL SUM 语句是正确的?

mysql - 每当我提交表单时都会出现 sql 错误