Postgresql
Postgres 排序優化
我正在尋找一種在插入而不是獲取期間對錶條目進行排序的方法。如果這是不可能的,有沒有辦法讓主鍵自動遞增?(即如果
id
是主要的,ai
將從 0 開始為每個不同的id
插入遞增)例子:
id | ai ---+--- 0 | 0 0 | 1 0 | 2 1 | 0 1 | 1 1 | 2 1 | 3
簡短的回答:不,是,分別。
SQL 數據庫確實以某種順序儲存數據。無論是通過分配,還是(當表上有聚集索引時)通過聚集鍵。
但是,執行查詢的過程並不能保證數據將按照儲存的順序返回。為了保證數據的順序,您必須
ORDER BY
在語句中使用該子句SELECT
。是的,您可以在 PostgreSQL 中創建一個自動遞增的 ID 值。雖然這通常用於創建用作主鍵的代理鍵,但如果您願意,它似乎僅可用於創建唯一列。
這個問題的公認答案應該給你你需要的東西。您要麼使用序列,要麼使用
SERIAL
偽數據類型(在幕後為您創建序列)。檢查您的版本的文件以獲取有關序列的更多詳細資訊。(我相信
SERIAL
很可能從 1 開始,而不是 0 - 您可能必須自己設置序列才能獲得特定的起點)注意:此答案適用於 PostgreSQL 的標記版本 9.4。從版本 10 開始,根據 SQL:2003 和 SQL:2008 標準(功能 #T174),PostgreSQL 現在具有類似於 Oracle 或 DB2 中的標識列機制。請參閱
GENERATED ... FOR IDENTITY
此處的文件。