OPENJSON解析表中的3M行的速度很慢

问题描述

我有一个包含3M JSON行的表。

我正在尝试解析JSON并将数据插入到另一个表中。但是OPEnjsON大约需要50秒才能解析500K行。

查询我正在使用


select   
    top 500000
    qse.*
from 
    dbo.QueryStore qs
    cross apply openjson(qs.Query) 
    with
        (

            Col1 nvarchar(max),Col2 nvarchar(max),Col3 nvarchar(max),Col4 nvarchar(max),Col5 nvarchar(max),Col6 nvarchar(max),Col7 nvarchar(max),Col8 nvarchar(max),Col9 nvarchar(max),Col10 nvarchar(max),Col11 nvarchar(max),Col12 nvarchar(max),Col13 nvarchar(max),Col14 nvarchar(max),Col15 nvarchar(max),Col16 nvarchar(max),Col17 nvarchar(max),Col18 nvarchar(max),Col19 nvarchar(max),Col20 nvarchar(max),Col21 nvarchar(max),Col22 nvarchar(max),Col23 nvarchar(max),Col24 nvarchar(max),Col25 nvarchar(max),Col26 nvarchar(max),Col27 nvarchar(max),Col28 nvarchar(max),Col29 nvarchar(max),Col30 nvarchar(max),Col31 nvarchar(max),Col32 nvarchar(max),Col33 nvarchar(max),Col34 nvarchar(max),Col35 nvarchar(max),Col36 nvarchar(max)
        )qse

如何提高OPEnjsON快速解析3M行的速度?

您的帮助和建议将不胜感激。

解决方法

您所有的列都包含更多的JSON吗?因为不包含更多JSON的字符串列应该(最大长度)为NVARCHAR(4000)。如果该字段包含数字,则应提供数字SQL数据类型(视情况而定),而不是NVARCHAR(MAX)。那应该减少分配并加快分配速度。