首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统计信息更新SQL查询

统计信息更新SQL查询
EN

Code Review用户
提问于 2012-02-16 23:24:50
回答 1查看 150关注 0票数 2

我有以下SQL语句,我认为可以在领域中加以改进(我相信可能有一种方法可以使用where over how,但我不确定如何使用,而且我确定有一种方法可以引用having子句中最后一次更新的列,但我不确定如何进行)。如有任何建议,将不胜感激:

代码语言:javascript
复制
/* Show indexes that haven't had statistics updated in two days or more */
select  
        t.name as [Table Name], 
        min(convert(CHAR(11),stats_date(t.object_id,s.[stats_id]),106)) as [Last Updated]
from    sys.[stats] as s
        inner join sys.[tables] as t
            on [s].[object_id] = [t].[object_id]
group by t.name
having  min(convert(CHAR(11),stats_date(t.object_id,s.[stats_id]),106)) < dateadd(day, -1, getdate())
order by 2 desc
EN

回答 1

Code Review用户

回答已采纳

发布于 2012-02-17 08:00:01

您可以只在where中使用条件,这将过滤单个记录而不是筛选组,然后可以对结果进行分组,以避免结果中的重复。

在比较日期时,不应该将日期转换为字符串。当您将其转换为字符串时,您应该在得到最低值之后才这样做,否则min会将日期作为字符串进行比较,并给出错误的结果。

代码语言:javascript
复制
select
  t.name as [Table Name], 
  convert(CHAR(11),min(stats_date(t.object_id,s.[stats_id])),106) as [Last Updated]
from
  sys.[stats] as s
  inner join sys.[tables] as t on s.[object_id] = t.[object_id]
where
  stats_date(t.object_id,s.[stats_id]) < dateadd(day, -1, getdate())
group by
  t.name
order by
  2 desc
票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/9067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档