【问题标题】:simple select is taking huge time on the table简单的选择在桌面上花费了大量时间
【发布时间】:2017-04-09 16:09:29
【问题描述】:

我有一个包含大约 1700 万条事务数据的表。它在键列上有聚集键和非聚集键。简单的选择也需要 11 分钟来检索数据,而对于 DML 操作则需要大量时间。

简单选择

Select * from TransactionTable

人们会从你身边问你做了什么

1)我创建了索引(集群和非集群)

2) 使用 DM Views 物理统计我检查了表是否碎片化?

3)在进行 DML 操作之前,我已经重新组织了索引。

请给我建议

【问题讨论】:

  • 您是否选择了所有带有 * 的 1700 万?
  • 您忘记提及查询本身。如果是select * from table,那么由于您要选择大量数据,因此根本没有索引对您有帮助。
  • @AndyKorneyev 简单的选择只是检索数据
  • @mohan111 您正在从巨大的表格中选择所有数据。在这种情况下,没有索引会对您有所帮助。这里没有什么可以优化的。
  • @mohan111 这根本不是 SQL Server 的工作方式。单个查询及其使用的索引会影响性能。你绝对不能用select * from table来判断性能。

标签: sql sql-server performance optimization


【解决方案1】:

对您有帮助的是保持数据压缩。
如果我没记错的话,您将不得不重新填充表格。
然而,更有趣的是,您将如何处理这些数据。

【讨论】:

  • 你能告诉我压缩的具体用法吗
  • @mohan111。忘记数据库,你告诉我压缩是用来做什么的。
  • 我知道压缩的意思,但是这种场景下的数据压缩
  • @mohan,一如既往,减少IO,用CPU付费。
【解决方案2】:

我只能考虑通过将数据类型调整到最低要求来尝试减小表的大小。如果您有很多 Null 值,请尝试使用稀疏列。

【讨论】:

  • 能否详细说明
  • 例如,如果您没有保存 unicode 文本,请不要使用 bigint 或 unicode 类型(如果您没有保存 unicode 文本并将数据长度保持在最低要求)。如果存在包含大量 Null 的列,请在列属性中将 Sparse 设置为 True。它将减小表格的整体大小。
猜你喜欢
  • 2020-11-06
  • 2015-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 2015-03-14
相关资源
最近更新 更多