J'ai la procédure stockée suivante pour parcourir des centaines de fichiers JSON différents qui sont téléchargés sur le serveur tous les jours. Le problème est que la requête prend un bon 15 minutes à courir, je vais devoir créer quelque chose de similaire bientôt pour un plus grand nombre de fichiers JSON, est-ce que quelqu'un est capable de me diriger dans la bonne direction en ce qui concerne l'augmentation des performances de la requête?Performances Openrowset de SQL Server
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', @[email protected] 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