私はクエリを作成していますが、最新の手順SELECT COUNT(*) FROM [modification]
では、クエリの最後の行を検出できるようにするサブ句を追加しましたが、パフォーマンスが低下します。
SELECT CONCAT(
IIF(row_number() OVER (ORDER BY forecastId) % 50000 = 1,
CONCAT('INSERT INTO modification (userId, epochTime, ',
'forecastId, description, auxText, auxDate) VALUES ('),
' ('),
userId, ',',
epochTime, ',',
forecastId, ',',
'''', dbo.encode4MySql(description), ''',',
'''', dbo.encode4MySql(auxText), ''',',
'''', CONVERT(VARCHAR(20), auxDate, 120), ''')',
IIF(row_number() OVER (ORDER BY forecastId) % 50000 = 0
OR row_number() OVER (ORDER BY forecastId) =
(SELECT COUNT(*) FROM modification),
'; COMMIT;', ','))
FROM modification
ORDER BY forecastId;
何をしているのかわからない場合は、一度INSERT () VALUES (),(),(),...
に 50000 行のステートメントを作成しています。
コメントに対する完全に代替的なアプローチの提案を制限してください。クエリを大幅に遅くすることなく、ここで最後の行番号を見つける方法を探しています。
私はクエリプランにあまり詳しくありませんが、役立つ場合はここに投稿できます。ここで関連する質問から多くのことを試しましたが、何もうまくいきません。