【问题标题】:How to create random SQLqueries based on database?如何创建基于数据库的随机 SQL 查询?
【发布时间】:2017-06-14 18:25:16
【问题描述】:

出于测试目的,我需要大量查询。 手动创建它不是一个选项,所以我正在搜索一个可以自动执行此操作的工具。

遗憾的是,我找到的唯一解决方案 (sqlsmith) 仅限于 postgres 和 SQLite。 SQL-Server 有没有类似的工具?

【问题讨论】:

  • 生成随机查询对于测试数据库的解析器实现很有用(这是 sqlsmith 的目的)。这是你的预期目的吗?如果不是,您认为随机查询生成器会为您做什么?
  • 基本上,我只需要查询来使用 Tuning Advisor。手动创建所有这些将非常耗时。
  • 生成随机查询以提供给优化顾问是完全没有意义的,因为您正在创建一个不反映实际使用情况的负载(因此您会得到无意义的建议)。如果您在知道负载之前缺乏创建索引的洞察力,那么您最好等待实际应用程序并根据这些分析器跟踪进行调整。为了进一步说明这一点:你最好得到一些会为你创建随机索引的东西,并跳过随机查询的中间人......
  • 您是否希望找到一种工具,它只会针对您的数据库生成随机查询,以便您可以通过优化顾问运行它们?这有什么用???
  • 老实说,我以前从未与 Tuning Advisor 合作过。我只是要求我的作业至少使用 10'000 个查询。 (我确信这不是手动创建的,也不是从实际使用中获取的,因为它是一个纯粹的实验性数据库)

标签: sql sql-server random


【解决方案1】:

“我不知道人们会想从哪个随机的地方前往另一个随机的地方,因此,让我们为每个可能的起点和目的地组合创建道路”。

这听起来有点疯狂,不是吗?这同样适用于您似乎想要实现的目标。您基本上希望找到一种工具,可以针对您的数据库生成随机查询,以便您可以将它们提供给优化顾问,然后它会建议假设查询的查询优化索引。

如果您想对数据库进行性能调整,您应该非常了解用户将向其提出的问题类型以及数据结构。有助于您入门的典型问题如下:

  • 我的用户最常对该表执行的搜索是什么?
  • 他们最有可能使用哪些标准?
  • 哪些列可以保证或可能在每一行中包含唯一数据?
  • 哪些列的数据选择性最有可能较低? (即男性/女性)

【讨论】:

    【解决方案2】:

    您是否正在寻找为多个表生成随机数据?我们通常使用 redgate 数据生成器工具。

    我建议出于 SQL 调优目的

    https://www.brentozar.com/blitzindex/

    http://www.nguyenlamminhdieu.com/zone/213/news/vi-VN/zone/213/news/351-database-engine-tuning-advisor-in-sql-server.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-19
      • 2011-09-16
      • 2018-06-10
      • 1970-01-01
      相关资源
      最近更新 更多