【发布时间】:2009-09-04 00:13:23
【问题描述】:
几天前,我开始使用分区来处理大量数据。
我按照文档的建议创建了主表,创建了一些从主表继承的子表,然后为每个子表添加了一个约束来定义允许的键值。约束就像:
检查(site_id = 'google.com')
现在这是我的问题:
在阅读文档时,我遇到了以下建议:“对于每个分区,在键列上创建一个索引”
如果整个分区的密钥相同,我应该这样做吗?在 site_id 列上建立索引会有什么好处吗?
当我第一次阅读它时,我决定如果所有行都有相同的键(比如 site_id = 'google_com'),那么就不需要索引了。
这是说明数据库结构和典型用法的 SQL:
创建表网站 ( site_id varchar(50) 主键, 描述文本 );
-- req 是主表
创建表请求 (
site_id varchar(50),
时间戳时间戳
);
-- 现在让我们创建几个子表
INSERT INTO 网站 (site_id) VALUES ('google_com'); 创建表 req_google_com ( 检查(site_id = 'google_com') ) 继承 (req);
插入网站 (site_id) 值 ('twitter_com'); 创建表 req_twitter_com ( 检查(site_id = 'twitter_com') ) 继承 (req);
-- 现在写一些请求:
插入 req_google_com 值 ('google_com', now()), ('google_com', now());
【问题讨论】:
标签: sql optimization postgresql