我試圖創建一個表,其中,第二列是有序的下降複合主鍵:使用ASC或DESC命令的主鍵?
CREATE TABLE AccountHistory (
AccountNumber BIGINT NOT NULL,
Ts TIMESTAMP NOT NULL,
Memo TEXT,
ChangeAmount BIGINT NOT NULL,
PRIMARY KEY (AccountNumber, ts DESC)
);
不過,PostgreSQL是說有在DESC
子句的語法錯誤。
- PostgreSQL真的不允許這樣嗎?
- 有沒有這樣的DESC鍵有意義?
- 我唯一的選擇是用我想要的語義創建一個額外的索引嗎?
這根本沒有意義。您在選擇時指定您的訂單,而不是在索引時指定。另外,爲了使用索引,您需要先通過'AccountNumber'命令,然後按'ts'命令,否則排序效率不高。爲了克服這個問題,只在'ts'上指定一個單獨的索引。但是,您不能在索引上指定排序順序,僅限於選擇。 – Psi
@Psi你當然可以告訴postgresql索引列的順序,這在很多情況下非常有意義,例如'create index myindex(AccountNumber,ts DESC)'在postgresql中有效,但我不確定是否它可以在主鍵上完成。 – nos
@nos你可以自己指定索引列的順序(例如'col B',然後'col A'),但是對於我來說這完全沒有意義,爲什麼你可以顛倒特定列的索引順序。另外我不明白你爲什麼要這樣做,因爲你想要選擇而不是定義索引。您只能按升序或降序進行排序,這只是從開始或結束(然後向後)讀取索引,因此不需要指定任何順序來存儲索引。 – Psi