- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一张 table :
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
first_name varchar(255) NOT NULL,
last_name varchar(255) NOT NULL,
cell_id BIGINT
...
)
cell_id 是来自 s2 的 uint64,可以代表地球上的任何位置。
-> click here for good description of s2
现在我想在 cell_id 上建立一个索引,主要是为了使用相等运算符。
CREATE INDEX user_position ON users (cell_id);
但现在我担心这个索引会被过度更新和查询,最终导致死锁。
所以我有了做这样的想法
CREATE INDEX user_position_even ON users (cell_id) WHERE user id % 2 = 0
CREATE INDEX user_position_odd ON users (cell_id) WHERE user id % 2 = 1
甚至可能会添加更多索引/稀缺性。
现在我有一些问题:
最佳答案
虽然 postgresql 肯定可以在一个表上使用多个索引,但您的 id 要么可以被 2 整除,要么不能被整除,因此只能使用这些索引中的一个。
不太可能。 default index type在 postgresql 上是 B-Tree,在这里你实际上是在做索引会为你做的一部分,你自己。但基准只是为了确定。
我会说这称为过早优化。 B-Tree indexes are pretty good在处理它。如果你真的遇到了死锁,请回到这里
B-tree, GiST and SP-GiST indexes
Short-term share/exclusive page-level locks are used for read/write access. Locks are released immediately after each index row is fetched or inserted. These index types provide the highest concurrency without deadlock conditions.
不,Postgresql 可以处理非常大的表。如果这成为一个问题。分区。
您没有坏掉的东西需要修理。当你做的时候回来。
关于sql - PostgreSQL 中的聚簇索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41675526/
我是一名优秀的程序员,十分优秀!