我在postgres数据库中有表location
,行数超过50.000.000+,我决定做分区!
表parent
有id,place
列,我想在place
列上进行分区,使用php和mysql,我得到所有不同的地方(大约300个)和foreach
CREATE TABLE child_place_name (CHECK (place=place_name))INHERITS(location)
之后在每个子表中
INSERT INTO child_place_name SELECT * FROM location WHERE place=place_name
这完美无缺! 我用
删除父类中的行后DELETE FROM location WHERE tableoid=('location'::regclass)::oid;
我影响了所有行是桌子! 然后我尝试进行查询和获取时间,并意识到现在是时候查询3次或更长时间。 我也有问题,我对速度的影响:首先我不能在子表中的id列上设置主键,但我在地方设置了索引键(也在父表的地方列上设置索引),还有我不能在id和place列上设置唯一键我在不允许的情况下得到错误的多个参数(或类似的东西)
我想要的只是表的选择方面我不需要在父表中插入时设置规则或触发器,因为这是另一个问题,只是我想知道这种方法有什么问题!也许300 +表是多少?