sql-server – 无法在计算列上创建筛选索引
在我之前的一个问题,Is it a good idea to disable lock escalation while adding new calculated columns to a table?,我正在创建一个计算列: ALTER TABLE dbo.tblBGiftVoucherItem ADD isUsGift AS CAST ( ISNULL( CASE WHEN sintMarketID = 2 AND strType = 'CARD' AND strTier1 LIKE 'GG%' THEN 1 ELSE 0 END,0) AS BIT ) PERSISTED; 计算列为PERSISTED,根据computed_column_definition (Transact-SQL):
但是当我尝试在我的列上创建索引时,我收到以下错误: CREATE INDEX FIX_tblBGiftVoucherItem_incl ON dbo.tblBGiftVoucherItem (strItemNo) INCLUDE (strTier3) WHERE isUsGift = 1;
如何在计算列上创建筛选索引? 要么 有替代解决方案吗? 解决方法不幸的是,从SQL Server 2014开始,无法创建过滤器位于计算列上的过滤索引(无论是否持久化).自2009年以来已开放Connect Item,所以请继续投票.也许微软有一天会解决这个问题. Aaron Bertrand有一篇文章介绍了Filtered Indexes的其他一些问题. (编辑:宿迁站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql – 如何从SELECT语句的前一个结果行获取值?
- sql中identity自增的方法是什么?
- sql-server – 包含要使用文件流的二进制文件的现有表
- 并发性 – 如何测试数据库中的竞争条件?
- 使用SQL有效地插入大量数据
- sql-server-2008 – SQL Server 2008 – 一个表24gb,删除了
- sql-server – SQL Server CASE语句是否评估所有条件或在第
- sql-server – SQL Server存储过程避免游标
- entity-framework – SQL FileStream Entity Framework存储
- sql-server – 复制表的完整结构