sql-server - 尽管被多次调用,但在 SQL Server 中执行一次查询

标签 sql-server sql-server-2005 sql-server-2008

我遇到的情况是,多个用户可能会多次调用一个查询,但我只希望它针对数据库运行一次(每周)。环境是 SQL Server Express,因此不能选择通过 SQL Server 代理进行调度。它需要与 2005 兼容。我也想让它尽可能轻量,所以我寻求建议。理想情况下是数据库范围内声明的变量 - 但我不认为 SQL Server 支持这样的野兽?谢谢

最佳答案

尝试这样的事情:

IF NOT EXISTS ( -- Check if you have the current week content
    SELECT  * 
    FROM    WeeklyTable 
    WHERE 
            DATEPART(YEAR, DateCr) = DATEPART(YEAR, GETDATE())
            AND
            DATEPART(WEEK, DateCr) = DATEPART(WEEK, GETDATE())
  )
BEGIN 
   -- delete old content
  DELETE WeeklyTable
   -- insert new content
  INSERT INTO WeeklyTable (MyID, MyField1, ... , MyFieldN, DateCr)
    SELECT 
      MyID, MyField1, MyField2, GETDATE()
    FROM MainTable
END

您可以为 WeeklyTable 创建所需的索引。

关于sql-server - 尽管被多次调用,但在 SQL Server 中执行一次查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8457340/

相关文章:

sql-server - SQL Server 2000 和 SQL Server 2005 中的触发器行为 : any change?

sql-server-2005 - 我可以通过 SSH 隧道进行 SQL Server 2005 合并复制吗?

performance - 只读对 SQL Server 没有影响吗?

asp.net - 对于 CRUD 来说,以下哪一个是更好的实践? Simple.Data 还是 Dapper?

sql-server - T SQL 批量插入跳过带或不带标题的第一行

c# - SqlTableDependency onchange 事件未触发

sql - 选择总和 HH :MM for period between two dates

sql-server-2005 - Linq-to-SQL 忽略 SQL Server 默认值

sql - 使用计算列作为主键的一部分是个好主意吗?

sql-server-2008 - 更改数据捕获仅用于更新和删除