gpt4 book ai didi

sql - 在多个位置模拟和操作分区数据库

转载 作者:搜寻专家 更新时间:2023-10-30 23:35:21 24 4
gpt4 key购买 nike

假设我创建了下表:

CREATE TABLE TABLE1 
(
id INT NOT NULL
country VARCHAR(10) NOT NULL
name VARCHAR(10) NOT NULL
productType VARCHAR(10) NOT NULL
)

例如,如果我有不同的 producType 值(type1、type2 .. 等)我根据这些类型进行分区,例如 partition1 用于 type1 等等。country 的可能值为:country1、country2 和 country3。我如何根据国家/地区执行或模拟水平分段,并能够使用与此类似的命令:

SELECT * FROM partition1@country1
WHERE name = someName

是否要求数据库必须存储在多个服务器上才能做到这一点?如果是这样,是否有另一种不需要的方法(在 Oracle 11g 上)?

最佳答案

要对表进行子分区吗?即按列表(ProductType)划分,再按列表(国家)划分?

这是可以做到的。

子分区生成的名称不反射(reflect)键的名称。所以他们不适合显式引用分区的方式选择语句将在 WHERE 子句中引用国家/地区:

select * from your_table partition (p_prodtype_0001)
where country = 'country1'

在这种情况下,优化器仍然可以应用子分区修剪。

您可以通过在不同模式中使用相同名称的不同表来伪造共享,无论是在相同的数据库中还是在不同的数据库中。您可以使用不同国家/地区的名称创建数据库链接。这将允许您使用 @country1 或其他任何东西。插入会很棘手。可能您必须有一个 View 和一个 INSTEAD OF 触发器。

关于sql - 在多个位置模拟和操作分区数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43474099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com