gpt4 book ai didi

sql-server - SQL Server 过滤索引

转载 作者:行者123 更新时间:2023-12-03 00:27:06 24 4
gpt4 key购买 nike

我有一个表,目前大小相当适中,但会增长到几百万行,因此我希望从一开始就构建东西。

该表包含 15 个左右的列,其中包含座席电话性能的信息,但这并不真正相关。在此表上运行的查询之一会按 agent_ID 查看上个月 4 列的数据。当然,通常我只会在 Agent_ID 和日期(包括 4 列)上覆盖索引并完成它,但我想看看我是否可以比这更聪明一点。

由于我使用的是 SQL Server 2008R2,所以我想查看过滤索引,并且仅使用当月的数据填充索引。问题是我似乎无法让它接受除了过滤器上的硬值之外的任何内容。

我是不是用这个树搞错了,你甚至可以在 SQL Server 中做到这一点,而不必求助于两个表或某种其他类型的分区吗?

编辑:感谢 Marcus,我知道如果没有一些手动工作就不可能做到这一点。

为此,我制作了这个脚本,我将在每个月初的黑暗时段运行该脚本,以移动索引窗口

USE [Tracker_3]
GO
DECLARE @FirstOfMonth datetime
DECLARE @LastOfMonth datetime

declare @strSQL as varchar(max)
set @FirstOfMonth = CONVERT(smalldatetime, CONVERT(varchar(4), DATEPART(yy, GETDATE())) + '-' + CONVERT(varchar(2), DATEPART(mm, GETDATE())) + '-' + '1')
set @LastOfMonth = DATEADD(dd, -1, DATEADD(mm, +1, @FirstOfMonth))


set @strSQL='

CREATE NONCLUSTERED INDEX [tblAgent_int_data_Covering_1] ON [dbo].[tblAgent_interval_data]
(
[Login_ID] ASC,
[Date] ASC
)
INCLUDE ( [i_acdtime],
[i_acwtime],
[holdacdtime],
[acdcalls])
WHERE [date] >= ''' + convert(char(10),convert(date,@firstOfMonth)) + ''' AND [date] <= '''+ convert(char(10),convert(date,@LastOfMonth)) + '''
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF,
DROP_EXISTING = ON, ONLINE = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON,
FILLFACTOR = 100) ON [T3_Data_2]

'

exec (@strSQL)

最佳答案

如果没有某种“手动”维护,您尝试完成的任务是不可能的 - 它类似于 problem of indexing "Age" .

我认为最好的方法是分区 - 但您需要定期删除/创建新分区。

关于sql-server - SQL Server 过滤索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3986547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com