我有以下存储过程来遍历每天下载到服务器的数百个不同的 JSON 文件。
问题是查询需要 15 分钟才能运行,我需要尽快为大量 JSON 文件创建类似的东西,有人能指出我在提高查询性能方面的正确方向吗?
DECLARE @json VARCHAR(MAX) = ''
DECLARE @Int INT = 1
DECLARE @Union INT = 0
DECLARE @sql NVARCHAR(max)
DECLARE @PageNo INT = 300
WHILE (@Int < @PageNo)
BEGIN
SET @sql = (
'SELECT
@cnt = value
FROM
OPENROWSET (BULK ''C:\JSON\tickets' + CONVERT(varchar(10), @Int) + '.json'', SINGLE_CLOB) as j
CROSS APPLY OPENJSON(BulkColumn)
WHERE
[key] = ''tickets''
')
EXECUTE sp_executesql @sql, N'@cnt nvarchar(max) OUTPUT', @cnt=@json OUTPUT
IF NOT EXISTS (SELECT * FROM OPENJSON(@json) WITH ([id] int) j JOIN tickets t on t.id = j.id)
BEGIN
INSERT INTO
tickets (id, Field1)
SELECT
*
FROM OPENJSON(@json)
WITH ([id] int, Field1 int)
END
END