Sql 以特殊方式索引nvarchar(max)
我将json内容存储在Sql 以特殊方式索引nvarchar(max),sql,sql-server,indexing,Sql,Sql Server,Indexing,我将json内容存储在nvarchar(max)列中。我还有deleted数据的概念,我使用特殊的位列deleted,现在,我可以使用nullable代替nvarchar(max),但在这种情况下,我将失去索引该字段的能力。在这方面,我有几个问题: 是否可以根据字段是否可为空来索引nvarchar(max)字段 在我的情况下,是否有任何理由对位字段进行索引deleted仅用于一个临时查询: 来自bigint=0的@, @till bigint=863999999999——最大JavaScr
nvarchar(max)
列中。我还有deleted
数据的概念,我使用特殊的位列deleted
,现在,我可以使用nullable代替nvarchar(max)
,但在这种情况下,我将失去索引该字段的能力。在这方面,我有几个问题:
- 是否可以根据字段是否可为空来索引
字段nvarchar(max)
- 在我的情况下,是否有任何理由对位字段进行索引
仅用于一个临时查询:deleted
来自bigint=0的
@,
@till bigint=863999999999——最大JavaScript unix时间戳(毫秒)
...
选择item.Id,
item.PreviousId,
item.UUID,
案例
当@fromNULL
位来表示可空性。因此,在一般情况下,当列不是聚集索引的一部分时,索引是有意义的,对吗?您不能索引任何可能大于900字节的单列或列集,而nvarchar(max)
肯定是(可能的)大得多。不能为如此大的blob列编制索引。
@from bigint = 0,
@till bigint = 8639999999999999 -- Max JavaScript unix timestamp in milliseconds
...
SELECT item.Id,
item.PreviousId,
item.UUID,
CASE
WHEN @from < item.UpdatedOnCurr AND item.UpdatedOnCurr <= @till AND @till < item.UpdatedOnNext
THEN item.Json
ELSE NULL
END AS Json,
item.TableName,
item.PermissionId,
item.UpdatedOnCurr
FROM Computed item
WHERE item.Deleted = 0 AND ( -- <------------- HERE IS DELETED
(@from < item.UpdatedOnCurr AND item.UpdatedOnCurr <= @till AND @till < item.UpdatedOnNext)
OR (item.UpdatedOnCurr <= @from AND @from < item.UpdatedOnNext AND item.UpdatedOnNext <= @till)
);