我正在使用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
而不将其拆分/解析成单独的列
请提出提高性能的方法
答案 0 :(得分:0)
除非JSON列要大得多,否则听起来很奇怪,仅选择它即可在4分钟内运行3秒查询。
需要考虑的一件事:当我在数据库中存储一堆JSON数据时(对于XML数据也存在同样的问题),我不想将其全部分解为单独的列。我明白了。
但是,大多数查询通常使用一些列。
您不必创建代码来在每次插入/更新等操作时将其分开,您可以创建一个仅包含这些值的持久化计算列,然后对持久化计算列进行索引。这样可以避免您无休止地解析JSON或XML。但是请确保使用PERSISTED,以便仅在插入/更新时进行计算,而不是在每次选择时进行计算。