Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 以特殊方式索引nvarchar(max)_Sql_Sql Server_Indexing - Fatal编程技术网

Sql 以特殊方式索引nvarchar(max)

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

我将json内容存储在
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)
);