Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
deterministic_json
Guest |
Подскажите, есть какие-нибудь варианты, сделать так, чтобы была computed column, и затем можно было навесить на нее INDEX при работе с JSON?USE tempdb; IF OBJECT_ID('T', 'U') IS NOT NULL DROP TABLE T; CREATE TABLE T ( ID INT NOT NULL IDENTITY, Attributes VARCHAR(MAX), Date1 AS JSON_VALUE(Attributes,'$.Date'), Date2 AS CAST(JSON_VALUE(Attributes,'$.Date') AS DATE), ); INSERT T(Attributes) SELECT '{ "Date" : "2017-12-08" }' UNION SELECT '{ "Date" : "2017-12-10" }' GO CREATE NONCLUSTERED INDEX IX_Date1 ON T(Date1); CREATE NONCLUSTERED INDEX IX_Date2 ON T(Date2); GO На выходе ошибка: (2 rows affected) Warning! The maximum key length for a nonclustered index is 1700 bytes. The index 'IX_Date1' has maximum length of 8000 bytes. For some combination of large values, the insert/update operation will fail. Msg 2729, Level 16, State 1, Line 15 Column 'Date2' in table 'T' cannot be used in an index or statistics or as a partition key because it is non-deterministic. В первом случае не нравится т.к. колонка становится вида строка и поиск работает только в таком формате: SELECT * FROM dbo.T AS T WHERE T.Date1='2017-12-08' а так не работает SELECT * FROM dbo.T AS T WHERE T.Date1='20171208' Про Deterministic CONVERT/CAST читал, может есть все таки какие-то возможности? Спасибо |
6 фев 18, 12:45 [21169590] Ответить | Цитировать Сообщить модератору |
aleks222
Guest |
Смотрим в книгу - видим фигу
|
6 фев 18, 15:12 [21170153] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |