【问题标题】:How to make select query more efficient?如何让选择查询更高效?
【发布时间】:2017-12-19 00:56:46
【问题描述】:

我有一张 Customers 表,在 701 属性(列)上有数百万条记录。我收到一个包含一行 700 列的 csv 文件。现在,根据这 700 个列值,我必须从 Customers 表中提取 id。

现在一种方法很明显,我在 where 子句中触发了一个包含所有 700 个值的选择查询。

我的问题是,如果我首先使用 where 子句中的一个属性获取一个较小的表,然后根据 where 子句中的第二个属性再次获取...并对所有属性重复此过程,会更快吗? 或者您能建议任何其他可以使其更快的方法吗?

【问题讨论】:

  • 您使用的是什么版本的 SQL 数据库?

标签: database select optimization rdbms-agnostic


【解决方案1】:

尝试理解这 700 个属性的逻辑。它们之间可能存在依赖关系,有助于将属性数量减少到更“现实”的程度。

然后我将使用相同的技术来查看是否可以运行较小的查询,这将受益于主表上的索引。每次我将结果存储在临时表中(减少 tmp 表中的行数或行数),为下一步索引临时表并再次执行,直到获得最终结果。 示例:如果您有日期属性:尝试隔离年份的所有记录,然后是日期等。

尽量保留复杂的请求,因为它们将针对较小的 tmp 表运行。

【讨论】:

  • 场景 1 我在一个 where 子句中使用所有属性。场景 2 我首先使用 where 子句中的一个属性获得一个较小的表,并对 700 个属性重复此过程。哪个会更快?
  • 我不知道你的服务器配置,但#2似乎是不会崩溃的。
  • 在数百万行上运行具有 700 个属性的 Where 子句并不可行
猜你喜欢
  • 2011-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-25
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
相关资源
最近更新 更多