数据库 – string列上的postgresql索引
说,我有一张表ResidentInfo,在这个表中我有唯一的约束HomeAddress,这是VARCHAR类型.对于将来的查询,我将在此列上添加一个索引.
查询将只有操作=,并且我将使用B-TREE模式,因为当前不推荐哈希模式. 问题:从效率来看,使用B-TREE,你认为我应该添加一个新的列,数字1,2,3 ….,N对应不同的homeaddress,而不是在HomeAddress中添加索引,我应该添加索引在数字列上? 我问这个问题,因为我不知道索引如何工作. 解决方法对于简单的等式检查(=),varchar或文本列上的B-Tree索引是简单且最佳选择.它肯定有助于表现很多.当然,一个简单整数的B-Tree索引表现更好.对于初学者,比较简单的整数值要快一些.但更重要的是,性能也是索引大小的函数.更大的列表示每个数据页的行数更少,意味着更多的页面必须被读取… 由于HomeAddress几乎不是唯一的,它不是一个很好的自然主键.我强烈建议使用替代主键. 如果您有其他表引用表,这将变得更加高效.除了为外键列重复冗长的字符串,您只需要一个整数列的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提供了很多选择 – 但是您不需要再为这个简单的例子. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |