全局分区索引是否比非分区索引更好(更快)?

2024-03-16

我有兴趣了解对通常作为查询目标的数字列进行分区是否有性能优势。目前我有一个包含约 5000 万条记录的物化视图。当使用常规 B 树索引并按此数字列搜索时,我得到的成本为 7,查询结果大约需要 0.8 秒(使用非预置缓存)。为该列添加全局哈希分区(具有 64 个分区)后,我得到的成本为 6,查询结果大约需要 0.2 秒(同样使用非预置缓存)。

我的第一反应是分区索引提高了我的查询性能。然而,我意识到这可能只是一个巧合,并且可能完全取决于正在搜索的值或我不知道的其他值。所以我的问题是:将全局散列分区添加到大型表上的数字列是否有性能优势,或者确定要扫描哪些索引分区的成本是否超过了仅在一个表上进行全范围扫描的成本非索引分区?

我确信这个问题,就像许多 Oracle 问题一样,可以用“视情况而定”来回答。 :) 我有兴趣了解应该考虑哪些因素来确定每种方法的优点。

Thanks!


我很确定您在研究中找到了这个参考资料 -分区表和索引 http://stanford.edu/dept/itss/docs/oracle/10g/server.101/b10743/partconc.htm。不过,如果有人感兴趣,我会提供一个链接,这是关于分区的非常好的材料。

开门见山 - 分区索引只是将索引分解为多个片段(在您的情况下为 16 个片段),并根据其散列分区键传播数据。当您想要使用它时,Oracle 会“计算”键的哈希值并确定在哪个部分继续搜索。

了解索引搜索的工作原理,对于非常大的数据,我认为最好选择分区索引,以减少您遍历的索引树(常规索引)。它实际上取决于表中的数据(常规索引树是如何组成的)并且是散列并直接跳转到较低节点比从起始节点遍历常规树更快。

最后,您必须对测试结果更有信心。如果一种技术在您的精确数据上比其他技术能提供更好的结果,请不要担心实施它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

全局分区索引是否比非分区索引更好(更快)? 的相关文章

  • 尝试在 Oracle 11.2.0.2.0(64 位)中获取连接时出现 java.lang.ArithmeticException

    我目前正在 Oracle 中使用 Java 存储过程 并且在尝试在 Java 代码中获取连接时看到一些奇怪的行为 我的Java被打包成jar文件 然后使用以下命令部署到Oracle中loadjava命令行实用程序 Apackage然后在数据
  • 如何记录更改列 DDL 操作

    我需要创建一个数据库触发器来记录每个更改 Add Column Modify Column Drop Column 使用Oracle的模式触发器在特定表中执行语句 如何获得 到目前为止我尝试了下面的代码 TRIGGER after ddl
  • SQL Server 2005 - 应该多久重建一次索引?

    我最近接手了一个项目 他们有一个 SQL 作业设置 每三个小时运行一次 它会重建 ASP NET 会员数据库表中找到的索引 每天重建索引 8 次 这看起来相当高 我每天都会获得大约 2000 个新用户 总共大约有 200 万注册用户 对于正
  • Pandas:多索引列标题

    我有时间序列数据框df看起来像这样 time A B C D E 2011 01 04 15 55 00 0 003452 0 005303 0 016632 0 009611 0 000726 2011 01 04 15 56 00 0
  • 如何在gnuplot中连接具有不同索引(一个数据文件)的点

    我有一个文件 a test dat 其中包含两个数据块 我可以通过相应的索引进行选择 first x1 y1 3 1 6 2 9 8 second x2 y2 4 5 8 2 2 7 现在我想用箭头连接两个索引的数据点 设置从 x1 y1
  • Oracle 中的函数与过程

    Oracle 中函数和过程的主要区别是什么 如果我可以用函数完成所有事情 为什么我必须使用过程 如果我无法在sql语句中调用过程 好吧 我会编写一个函数来完成相同的工作 过程不返回值 好的 在任何 dml 操作后我将仅返回 sql rowc
  • 将 OraclePreparedStatement 与 DBCP 连接结合使用

    我正在尝试使用 dbcp 框架为我的 oracle 服务器创建一个连接池 我用过这个tutorial http web archive org web 20120615100115 http www freshblurbs com 80 j
  • 从 JavaScript 数组中获取对象值的最大值和最小值

    从 JavaScript 对象数组中获取最大值和最小值的最佳方法是什么 Given var a x 1 y 0 x 1 y 10 x 12 y 20 x 61 y 10 var minX Infinity maxX Infinity for
  • 慢 Eclipse Spring STS 插件

    我是 Spring 新手 安装了 Eclipse STS 插件 使用服务似乎非常慢 CPU 使用率激增 笔记本电脑只会变热 实际上风扇就像喷气发动机一样运行 直接响应服务的启动 停止 虽然下面的内容确实为我解决了 Spring STS 的所
  • 使用 to_char 格式化间隔

    以下 SQL 命令 select TO CHAR NVL arg1 arg2 TO DSINTERVAL 0 00 00 00 from table1 生成格式为 000000000 00 03 01 954000 的结果 是否可以在 to
  • MySQL InnoDB 查询性能

    我正在尝试优化一个简单的 sql 查询 该查询将多次运行大量数据 这是场景 MySQL 与 InnoDB 表 where 和 join 中使用的所有字段都已索引 表有 FK 我不需要查询的整个缓存 但每个表的缓存是可能的 表有更多的更新 插
  • TOAD 将 &String 视为绑定变量

    我正在使用 Oracle Data Integrator 开发一些 ETL 有时会使用 TOAD 测试部分代码 今天我遇到了 TOAD 的问题 我有一行像 AND column value like DEV PROD 当我尝试运行包含上面过
  • T-SQL:如何使用 SELECT 创建表?

    在 oracle 中 您可以发出 create table foo as select from bar 等效的 T SQL 语句是什么 您可以使用SELECT INTO http msdn microsoft com en us libr
  • 如何有效地从 DB2 表中删除所有行

    我有一个大约有 50 万行的表 我想删除所有行 如果我做简单的delete from tbl 事务日志已满 我不关心这种情况下的事务 无论如何我都不想回滚 我可以删除许多事务中的行 但是有更好的方法吗 如何有效地从 DB2 中的表中删除所有
  • 磁盘寻道时间测量方法

    我编写了一个脚本来测量 HDD 上的寻道时间 并且其完成方式的微小变化会导致显着不同的时间 第一个周期在磁盘开头的区域内进行跳转 第二个周期选择磁盘上执行查找的随机区域 相同大小 这种方法显然不同 但我不明白为什么它会改变结果 请注意 对于
  • APEX 安装失败,PLS-00201:必须声明标识符“SYS.DBMS_DB_VERSION”

    尝试在 Oracle XE 18c 数据库上安装 Oracle APEX 20 2 如下官方说明 https docs oracle com en database oracle application express 20 1 htmig
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • ORA-12154: TNS: 无法解析指定的连接标识符 (PLSQL Developer)

    我需要使用 PLSQL Developer 访问 oracle 数据库 当我尝试连接到数据库时出现以下错误 ORA 12154 TNS could not resolve the connect identifier specified 我
  • 用于选择特定 div 中具有特定类的锚元素的 jQuery 选择器是什么

    我有一些这样的代码 我想选择每个 a 带有类的标签status在 div 中foo div a class status a div 你可以这样做 foo find status a
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4

随机推荐

  • 从图像列表加载和查看图像

    正如您所看到的 下面给出的代码不是很有用 是否可以缩短代码 鼠标滚轮向后和向前给出相同的结果 下图 无法配置 Keydown Private Sub Images Load ByVal sender As System Object ByV
  • nodeJS util.format 传递数组

    我正在使用 util format 来格式化字符串 如下所示 util format My name is s s John Smith 事实上 第二个参数是一个数组 John Smith 阻止我的代码替换第二个 s 但我需要它是一个数组
  • 为什么使用 MySQL 时带有“exists”的 sql 运行速度比“in”慢

    我是 MySQL 优化的新手 我发现了一个惊人的事情 使用 exists 的 sql 比使用 in 运行得慢 以下是我的 DDL mysql gt show create table order G 1 row Table order Cr
  • Spring批处理:在侦听器中获取ExecutionContext

    我是 Spring 批次的新手 我需要计算读取 写入和出错的元素 我定义了这样的步骤 Bean public Step stepMain StepBuilderFactory stepBuilderFactory return stepBu
  • Python - Gspread 请求错误 401

    我目前正在制作一个连接到 Google 电子表格 gspread 的 Discord 机器人 但在我运行它一段时间后 它开始发出错误 并且无法再连接到我的 gspread 除非我重新启动它 我收到的错误 https hastebin com
  • 页面方法和会话

    我已经四处寻找这个解决方案 任何见解都将受到高度赞赏 情况 当单个页面中有多个 PageMethod 调用时 每个方法调用都会持有 Session 对象的锁 从而导致阻塞 PageMethod 调用只能异步进行 Page指令转向False
  • 如何在 MVC 视图中使用 jquery/ajax 验证空格

    我有一个包含表单的 MVC 视图 现在需要验证在特定文本字段中输入的数据 我只需要确保没有空格 在我看来 有人可以给我一个使用 jquery ajax 脚本进行表单验证的示例吗 将验证构建到视图模型的一部分可能是个好主意 这样您的模型中就会
  • DBIx:带有附加属性的类多对多关系

    我正在 Catalyst 框架中使用 DBIx Class 我的本地目标是在用户和任务之间添加新的多对多关系 但我需要一个小技巧 用户可以在任务中扮演不同的角色 例如 工人 或 旁观者 所以我有users包含这些字段的表 id name I
  • AFNetworking:重试操作时访问完成处理程序

    给出一些上下文 我正在尝试为身份验证错误实现一个全局错误处理程序 使用令牌身份验证 而不是基本身份验证 它应该尝试重新身份验证 然后重复原始失败的请求 请参阅我之前的问题 AFNetworking 全局处理错误并重复请求 https sta
  • 在 Spring Boot 中使用 @TestPropertySource 覆盖 @PropertySource

    我有我的 Spring Boot 主类 SpringBootApplication PropertySource file my file properties public class Application extends Spring
  • 如何列出远程SVN存储库中的所有文件?

    我访问一个large远程 SVN 存储库 由于我通常只需要其内容的一小部分 因此我进行了 稀疏结帐 svn checkout depth empty svn ssh src 每当我需要存储库中的文件夹时 我都可以这样做 svn up fol
  • Angular 2默认选中单选按钮

    我正在尝试检查默认值为零的单选按钮 我正在尝试使用 checked true 属性 但这是行不通的
  • Swift 可重用 UITextFieldDelegate

    我正在尝试实现一个可重用的UITextFieldDelegate类如下 class CustomTextFieldDelegate NSObject UITextFieldDelegate 所有委托协议方法均已正确实现 In the con
  • Node.js:如何序列化/反序列化 React 组件?

    我想序列化一个 React 元素 给定 props 的 React 组件的实例 并在其他地方反序列化它 你为什么问 我希望能够通过标准输出从一个进程发送该类 并在另一个进程中渲染它 我还希望渲染的组件是交互式的 所以只需使用ReactDOM
  • CSS 网格布局使用 javascript 改变列宽

    我尝试设置 CSS 网格布局如下 wrapper width 800px display grid grid template columns repeat 3 200px grid template rows repeat 5 200px
  • 如何在itextsharp文档中并行设置两个表?

    How can I set two tables parallelly in a document 我的生成 pdf 的示例代码是 Document doc new Document new Rectangle 288f 144f 10 1
  • 我可以确定查询是否找不到任何值在指定范围内的子项吗?

    我能以某种方式确定是否没有孩子ref存在于之间的值 1 and newTotal 这就是我希望能起作用的 如果查询中存在子项 则回调将运行 ref orderByValue startAt 1 endAt newTotal limitToL
  • 如何在 PHP Linux 中访问 .mdb 数据源?

    我刚刚安装unixODBC为了访问我的 mdb 数据源PHP 5 3 CentOS 6 10使用这个命令 yum install unixODBC 在 Windows 中我可以简单地取消注释extension php pdo odbc dl
  • 实体框架 CTP4 代码优先:映射受保护的属性

    我想在模型上使用延迟加载集合 但我希望通过单独的方法来完成添加 删除功能 所以像这样 class Model protected virtual ICollection
  • 全局分区索引是否比非分区索引更好(更快)?

    我有兴趣了解对通常作为查询目标的数字列进行分区是否有性能优势 目前我有一个包含约 5000 万条记录的物化视图 当使用常规 B 树索引并按此数字列搜索时 我得到的成本为 7 查询结果大约需要 0 8 秒 使用非预置缓存 为该列添加全局哈希分