【问题标题】:Improve performance of a simple SQL query提高简单 SQL 查询的性能
【发布时间】:2018-02-09 12:48:23
【问题描述】:

我有这个 SQL 查询:

SELECT COUNT(*) 
FROM Contract_Position 
WHERE Position_Type != 'MARKET'

点击下面的链接查看数据表的图片 -

想象一下现在Contract Position 表中有数百万条记录的场景,您将如何提高上述查询的性能?

感谢您的帮助, S

【问题讨论】:

  • 请使用以下内容作为如何发布好问题的指南:spaghettidba.com/2015/04/24/… 提示:数据而不是图像让世界变得不同......另外,对于性能问题,它共享执行计划将是有益的。为此使用以下工具:brentozar.com/pastetheplan
  • 您在 cmets 中陈述了一个只是假设问题的答案。您希望得到什么答案?

标签: sql sql-server


【解决方案1】:

在列 Position_Type 上有一个索引。

【讨论】:

  • 谢谢。什么类型的索引?
  • 你需要分享你已经拥有的索引......只是盲目地添加索引并不总是回答问题
【解决方案2】:

在 Position_Type 列上添加用户定义的索引

【讨论】:

  • 那将是一个非聚集索引?
  • 你需要分享你已经拥有的索引......只是盲目地添加索引并不总是回答问题
  • 对不起,没有可用的索引,这是一个假设的情况/问题。我唯一的数据是在图像上。我还能提供什么来帮助您回答吗?
  • 在表中仅使用一个链接集群索引:stackoverflow.com/questions/91688/…
【解决方案3】:

如果索引不够,例如 MariaDB,您可以根据某些标准对表进行分区。

【讨论】:

  • 问题被标记为 SQL Server,因此 MariaDB 不相关。
  • 哪个索引最好使用 - 集群或非集群
  • 集群的性能更好,但这取决于你必须做什么
  • 从上面我被建议引入一个索引来改善性能问题。请指教
  • @SatyenGotecha 在假设的示例中,没有人可以“提高”性能。所以别担心,开始做吧。如果您遇到实际的性能问题,那就是解决它的时候了。请注意,没有什么是免费的。您需要衡量使用的各个方面的性能。只调整一个查询很容易使其他查询变得更糟。如果您对此不熟悉,那么您应该咨询具有适当能力的人。
猜你喜欢
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多