问题描述
嗨,康纳/克里斯,
请看看下面的表格结构
这是加载表,没有与任何列相关的唯一性,因此我们不能为此选择主键。
可以使用WHERE columns-created_on,card_type & sent_flag提取此表中的数据。
我想到使用范围分区使用 (created_on作为分区键) 对这个表进行分区。
对于每个created_on,当前有100k条记录,并且将来可能会增长。
您能否建议任何更好的方法/建议,例如分区技术,考虑基于created_on,card_type和sent_flag的WHERE条件的本地索引。
--------- 附加信息 ------------------
tb_card_details
---------------
卡片id开始日期结束日期地址区域创建卡片类型标记序列编号
-
1000001 26/02/2017 26/03/2017英国亚太地区26/02/2017零售1或0 2017022600000001
..
等等
1000001 26/02/2017 26/03/2017英国亚太地区26/02/2017零售1或0 2017022699999999
..
100k记录
1000001 26/02/2017 26/03/2017英国EMEA 27/02/2017零售1或0 2017022700000001
..
1000001 26/02/2017 26/03/2017英国EMEA 27/02/2017零售1或0 2017022799999999
每当任何select命中此表时,该表将仅具有列created_on,card_type,sent_flag。
从执行后的结果中,created_on =?卡片类型 =?和sent_flag =?(例如300k行),
Java将多线程的结果集通过获取行让说100行每个线程 (使用sequence_number)..
请看看下面的表格结构
这是加载表,没有与任何列相关的唯一性,因此我们不能为此选择主键。
tb_card_details --------------- card_id start_date end_date address email created_on card_type sent_flag ------- ---------- -------- ------- ----- ---------- --------- --------- 1000001 26/02/2017 26/03/2017 UK dummy@abc.com 26/02/2017 Retail 1 or 0 .. 等等 1000001 23/02/2017 26/04/2017 US asdex@abc.com 27/02/2017 Corp 1 or 0 .. 100k记录 1000002 26/03/2017 26/05/2017 UK 12344@abc.com 28/02/2017 Retail 1 or 0 .. upto 150k records 1000003 23/04/2017 26/04/2017 US 15456@abc.com 10/03/2017 Corp 1 or 0 .. 等等复制
可以使用WHERE columns-created_on,card_type & sent_flag提取此表中的数据。
我想到使用范围分区使用 (created_on作为分区键) 对这个表进行分区。
对于每个created_on,当前有100k条记录,并且将来可能会增长。
您能否建议任何更好的方法/建议,例如分区技术,考虑基于created_on,card_type和sent_flag的WHERE条件的本地索引。
--------- 附加信息 ------------------
tb_card_details
---------------
卡片id开始日期结束日期地址区域创建卡片类型标记序列编号
-
1000001 26/02/2017 26/03/2017英国亚太地区26/02/2017零售1或0 2017022600000001
..
等等
1000001 26/02/2017 26/03/2017英国亚太地区26/02/2017零售1或0 2017022699999999
..
100k记录
1000001 26/02/2017 26/03/2017英国EMEA 27/02/2017零售1或0 2017022700000001
..
1000001 26/02/2017 26/03/2017英国EMEA 27/02/2017零售1或0 2017022799999999
每当任何select命中此表时,该表将仅具有列created_on,card_type,sent_flag。
从执行后的结果中,created_on =?卡片类型 =?和sent_flag =?(例如300k行),
Java将多线程的结果集通过获取行让说100行每个线程 (使用sequence_number)..
专家解答
当然,我们将在created_on上进行分区。就更细粒度的分区而言,很大程度上取决于card_type和/或sent_flag的分布/num distinct值。
您可能会在 (例如) 这些列上的散列或列表子分区方案中看到好处,因为一旦您能够检索数十万行,索引往往最终弊大于利。
分区很少会损害大规模扫描-但要记住的一件事是,一旦你进入大量的分区,你可以最终得到较大的优化时间,所以你应该考虑粒度权衡。
您可能会在 (例如) 这些列上的散列或列表子分区方案中看到好处,因为一旦您能够检索数十万行,索引往往最终弊大于利。
分区很少会损害大规模扫描-但要记住的一件事是,一旦你进入大量的分区,你可以最终得到较大的优化时间,所以你应该考虑粒度权衡。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
592次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
556次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
479次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
470次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
456次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
429次阅读
2025-04-22 00:13:51
Oracle 19c RAC更换IP实战,运维必看!
szrsu
428次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
413次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
357次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
355次阅读
2025-04-15 14:48:05