【问题标题】:Is it possible to optimize sql queries under these conditions在这些条件下是否可以优化sql查询
【发布时间】:2023-04-06 00:46:02
【问题描述】:

有可能在这些条件下以某种方式优化查询的性能(除了使用硬件和操作系统设置)

1) 您不能添加索引。 2) 您不能自行更改查询。

这是对数据库性能进行基准测试时的常见约束。

我知道 dbms 有一个查询优化器,它使用与访问查询所涉及的表有关的所有统计信息玩数字游戏。是否存在查询优化器提出次优解决方案的情况。我知道您可以强制优化器使用特定的查询计划。不确定如何在不更改查询计划的情况下缓存它。有问题的数据库是 Sybase

【问题讨论】:

  • 您可以使用查询提示来强制编译器遵循特定路径,但我非常怀疑您能否提出比系统决定的更好的方法
  • 使用表分区
  • 命名缓存将是另一个以 dba 为中心的解决方案。正如 Henrik 在下面第 4 点中提到的,在数据​​库服务器内部,您可以留出内存用于特定的表/索引/对象/等。

标签: sql database optimization query-optimization sybase


【解决方案1】:

独立于此处的特定情况(Sybase),有多种方法可以在给定条件下优化查询。语法是系统特定的。

  1. 大多数系统依靠统计信息来寻找最佳查询计划。因此,更新统计信息有助于提高性能。
  2. 许多系统允许设置独立于应用程序的优化级别。这会对性能产生积极影响。
  3. 许多系统允许对类似的即席查询(动态 SQL)重复使用查询计划。这通常会产生积极影响。
  4. 允许数据库系统(独立于操作系统)为瓶颈分配更多内存也会有所帮助。

你有什么特权,基准规则是什么?

【讨论】:

  • 我拥有所有的管理权限。 Benchmark 附带一组针对特定数据集的查询。您不能更改查询或索引。
【解决方案2】:

Data Henrik 提到了优化级别 - 您可以为 Sybase 或每个会话设置此系统范围。

您甚至可以使用灵活的方法根据应用程序名称或登录 ID 设置级别(请参阅 Rob Verschoor 的 Sybase 站点 - 登录触发器。)我猜您是否不允许更改查询或索引不太可能被允许这样做。

据我所知,您没有具体问题 - 您只是提到了基准测试。

您应该确保所有表都运行了 UPDATE INDEX STATISTICS,然后您可以使用 3 个 Sybase 优化级别(OLTP、MIX、DSS)进行基准测试。

如果你有特定的问题,那是另一个主题。

【讨论】:

  • 不,这是提高系统范围性能的普遍问题。据我所知,基准测试使用的查询或基准脚本创建的索引可以更改是唯一的限制。
猜你喜欢
  • 2011-06-18
  • 2011-04-25
  • 1970-01-01
  • 2018-01-11
  • 2022-10-30
  • 1970-01-01
  • 1970-01-01
  • 2022-12-18
  • 2019-02-24
相关资源
最近更新 更多