选择JSON列会花费太多查询执行时间

时间:2019-09-24 10:56:55

标签: json sql-server

我正在使用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秒内运行,如果我选择A.JSON_Data,则需要4分钟

A.JSON_Data是一个很大的JSON数据列,格式为

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

我想提高SQL查询的性能,但希望按原样显示JSON_Data而不将其拆分/解析成单独的列

请提出提高性能的方法

1 个答案:

答案 0 :(得分:0)

除非JSON列要大得多,否则听起来很奇怪,仅选择它即可在4分钟内运行3秒查询。

需要考虑的一件事:当我在数据库中存储一堆JSON数据时(对于XML数据也存在同样的问题),我不想将其全部分解为单独的列。我明白了。

但是,大多数查询通常使用一些列。

您不必创建代码来在每次插入/更新等操作时将其分开,您可以创建一个仅包含这些值的持久化计算列,然后对持久化计算列进行索引。这样可以避免您无休止地解析JSON或XML。但是请确保使用PERSISTED,以便仅在插入/更新时进行计算,而不是在每次选择时进行计算。