Выбор столбца JSON занимает слишком много времени на выполнение запроса - PullRequest
0 голосов
/ 24 сентября 2019

Я использую SQL Server 2016

Я делаю простой оператор выбора

SELECT A.JSON_Data, Col xyz, Col abc
FROM Table A
INNER JOIN Table B ON A.ID = B.ID

, и я заметил, что, если я не выбираю A.JSON_Data, он выполняется за 3 секундыеще 4 минуты, если я выберу A.JSON_Data

A.JSON_Data - это большой столбец данных JSON с форматом, подобным

{"name":"John", "age":31, "city":"New York"}

Я хочу повысить производительность SQL-запроса, но хочу отобразить JSON_Data как есть без разбивки / разбора на отдельные столбцы

Пожалуйста, предложите способ повышения производительности

1 Ответ

0 голосов
/ 25 сентября 2019

Если этот столбец JSON не намного, намного больше, звучит очень странно, что его выбор приводит к выполнению 3-секундного запроса в течение 4 минут.

Одна вещь, на которую следует обратить внимание: когда я храню кучуданных JSON в базе данных (и та же проблема для данных XML), я не хочу разбивать все это на отдельные столбцы.Я понимаю.

Однако в большинстве запросов обычно используется несколько столбцов.

Вместо того, чтобы писать код для разбивки их на каждую вставку / обновление и т. Д., Вы можете создатьпостоянный вычисляемый столбец, который имеет только эти значения, а затем индексируйте постоянные вычисляемые столбцы.Это исключает необходимость бесконечного анализа JSON или XML.Но убедитесь, что вы используете PERSISTED, поэтому он рассчитывается только при вставке / обновлении, а не при каждом выборе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...