簡體   English   中英

創建索引和唯一約束的最佳方法是什么?

[英]What is the best way to create index and unique constraint?

在如下模式上創建索引和唯一約束的最佳方法是什么?

我的大多數查詢將根據date列進行過濾。 如果我在date上創建單列索引和包括(日期和鍵)的唯一約束,我最終會創建兩個索引,因為唯一約束也會創建一個索引。

有沒有更好的方法來解決這個問題?

日期 鑰匙 價值
2021 年 12 月 12 日 一個 3
2021 年 12 月 12 日 b 4
2021 年 12 月 13 日 一個 3
2021 年 12 月 13 日 b 4

這取決於。

我的大多數查詢將根據日期列進行過濾。

那是不夠的信息。 對於相等過濾器, (date, key)上的PRIMARY KEY (以date作為前導列:) 通常會很好:

CREATE TABLE tbl (
  date  date
, key   text
, value int
, PRIMARY KEY (date, key)
);

因為……見:

這也涵蓋了date上的范圍過濾器,但是當與key上的相等過濾器結合使用時,它並不理想,因為...請參閱:

如果您的表與示例所建議的一樣簡單,並且您通常在SELECT列表中包含value ,請考慮使用覆蓋索引(需要 Postgres 11 或更高版本)以獲取僅索引掃描:

...
, PRIMARY KEY (date, key) INCLUDE (value)

看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM