如何在postgresql模式中设置索引

hwamh0ep  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(100)

我有一张这样的table:

CREATE TABLE shop_webhooks_logs (
  id UUID NOT NULL PRIMARY KEY,
  shop_id UUID not null REFERENCES shop(id),
  topic VARCHAR,
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
)

字符串
我的querie会是这样的:

SELECT id, shop_id FROM shop_webhook_logs WHERE id = $1 AND shop_id = $2


所以我的where语句有两个select,那么我应该像这样在shop_id上创建另一个索引吗?

CREATE INDEX I_WEBHOOK_LOGS ON shop_webhook_logs(shop_id)

e7arh2l6

e7arh2l61#

如果在WHERE子句中有两个条件与AND链接,则每个结果行必须满足这两个条件。这意味着如果最多有一个表行满足第一个条件,并且您有该条件的索引,则查询执行已经非常高效。
这就是这里的情况:因为id是主键,所以在该列上自动有一个唯一的索引,所以扫描该索引将最多返回一行。所以不需要索引其他条件; PostgreSQL将应用一个额外的过滤器,如果需要,可以删除索引扫描找到的行。

相关问题