gpt4 book ai didi

oracle 对连接和 where 条件中经常使用的列进行分区

转载 作者:行者123 更新时间:2023-12-01 06:30:52 24 4
gpt4 key购买 nike

客户表包含 950 万条记录。 customer_id column 是主键。数据库是 Oracle .

问题:

1) 表应该包含主分区还是子分区?我如何决定?
另外,由于数据的类型,我认为索引 columnA 或 columnB 在这里没有帮助。

TableA.columnA (varchar) has more than 80% of the records for columnA values 5,6,7. The columnA has values from 1 to 7 only.
TableA.columnB (varchar) has 90% of the records for columnB value = 102. The columnB has values from 1 to 999.

此外,典型的查询是(没有特定的顺序):
Query1: where tableA.columnA = values
Query2: where tableA.columnB = values
Query3: where tableA.columnA = values AND/OR tableA.columnB = values

2)当我们创建子分区时,如果查询只包含子分区列的where子句会发生什么?查询执行是直接进入子分区还是通过主分区?

3) 连接包含 tableA.partitioned_column = tableB.indexed_column
(eg. customer_Table.branch_code = branch_table.branch_code)

在 JOIN 的情况下,分区有帮助吗?它会提高性能吗?

最佳答案

1)不知道表结构,通常使用的方式等很难回答。但通常对于大表分区通常是必要的。

2) 如果您不指定分区,那么 Oracle 将不得不浏览所有分区以找到子分区的位置(这不是很慢)。然后在子分区上使用分区修剪。与根本没有子分区相比,它仍然会快得多。但最好的情况是引用WHERE分区和子分区。

3) 对于 99%,我认为它会有所帮助,因为 Oracle 可以使用分区修剪从 tableA 中立即获取所需的行。如果您检查查询计划,您将 100% 确定。但最好的情况是当两列都是分区键时。

关于oracle 对连接和 where 条件中经常使用的列进行分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21926403/

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