数据库 – string列上的postgresql索引

前端之家收集整理的这篇文章主要介绍了数据库 – string列上的postgresql索引前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
说,我有一张表ResidentInfo,在这个表中我有唯一的约束HomeAddress,这是VARCHAR类型.对于将来的查询,我将在此列上添加一个索引.
查询将只有操作=,并且我将使用B-TREE模式,因为当前不推荐哈希模式.

问题:从效率来看,使用B-TREE,你认为我应该添加一个新的列,数字1,2,3 ….,N对应不同的homeaddress,而不是在HomeAddress中添加索引,我应该添加索引在数字列上?

我问这个问题,因为我不知道索引如何工作.

解决方法

对于简单的等式检查(=),varchar或文本列上的B-Tree索引是简单且最佳选择.它肯定有助于表现很多.

当然,一个简单整数的B-Tree索引表现更好.对于初学者,比较简单的整数值要快一些.但更重要的是,性能也是索引大小的函数.更大的列表示每个数据页的行数更少,意味着更多的页面必须被读取…

由于HomeAddress几乎不是唯一的,它不是一个很好的自然主键.我强烈建议使用替代主键. serial column是这个的明显选择.它的唯一目的是要有一个简单,快速的主键来处理.

如果您有其他表引用表,这将变得更加高效.除了为外键列重复冗长的字符串,您只需要一个整数列的4个字节.而且您不需要级联更新,因为一个地址一定会改变,而代理pk可以保持不变(但不一定当然).

你的桌子可能是这样的:

CREATE TABLE resident (
   resident_id serial PRIMARY KEY,address text NOT NULL
   -- more columns
);

CREATE INDEX resident_adr_idx ON resident(address);

这导致两个B-Tree索引.一个关于resident_id的唯一索引和一个简单的地址索引.

More about indexes in the manual.Postgres提供了很多选择 – 但是您不需要再为这个简单的例子.

猜你在找的MsSQL相关文章