![](/img/trans.png)
[英]What is the best way to create a SQLITE table with REAL values including a UNIQUE constraint?
[英]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.