【问题标题】:how to find column usage statistics in SQL server for non-indexed columns?如何在 SQL Server 中查找非索引列的列使用统计信息?
【发布时间】:2018-11-14 06:40:09
【问题描述】:

我想检查有多少用户对表中的特定列进行了读取或扫描。我可以在 SQL Server 或 Teradata 中编写任何 sql 查询吗?

【问题讨论】:

  • 是的,SQL Server 有索引使用 DMV。它不显示特定用户,但显示使用情况(搜索、扫描、查找、更新)
  • 谢谢。但是,非索引列呢?如何找到没有索引的特定列的使用信息?
  • 你可能不得不在这里和那里做一些假设。您可以查询所有对象,获取其中每一列的列表(sql_referenced_entities 和 sql_referencing_entities),将其与您拥有索引的所有列的列表(sys.indexes 和 sys.index_columns)进行对比,并查看差距在哪里是。您还可以找到查找计数非常高的 PK。这意味着您在 PK 上执行密钥查找,而不是在您的 NC 索引上搜索/扫描。
  • 或者在您的计划缓存 (sqlskills.com/blogs/jonathan/…) 中寻找键查找,找到正在查找的列,然后对这些列进行索引。
  • 启用 Query Logging with Objects 后,您可以在 dbc.QryLogObjectsV 中找到有关查询中使用的表/列的信息

标签: sql sql-server tsql teradata


【解决方案1】:

以下示例 SELECT 语句检索查询的对象信息:

SELECT QueryID, ObjectDatabaseName (Named ObjDBName), ObjectTableName (Named ObjTblName), ObjectColumnName (Named ObjColName), ObjectID (Named ObjId), ObjectNum (Named ObjNum), ObjectType (Named ObjType), FreqofUse
FROM DBC.QryLogObjectsV where queryid = 201205134619838031;

我是从here提到的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-06
    • 2012-05-26
    • 1970-01-01
    • 2012-12-18
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多