Laquelle des deux instructions suivantes considérez-vous comme la plus efficace pour supprimer un grand nombre de lignes?optimisation de l'instruction DELETE avec un nombre
Déclaration n ° 1:
DELETE TOP (@count) FROM ProductInfo WHERE productId = @productid
Déclaration n ° 2: table dérivé
DELETE t1 FROM (SELECT TOP (@count) * from ProductInfo
WHERE productId = @productId v) t1
1. Que se passe-t-il si l'instruction delete échoue? Est-ce que ça continue dans la boucle while? 2. Que se passe-t-il si la suppression échoue, définit-elle rowcount = 0 et quitte faussement la boucle? – RPS
L'ajout de la gestion des erreurs à chaque exemple d'exemple pourrait gonfler l'échantillon et diluer la valeur de l'exemple. Mais si vous demandez explicitement la gestion des erreurs, alors je vous recommande de l'encapsuler dans un bloc BEGIN TRY/BEGIN CATCH. Vous devez ensuite traiter l'erreur de manière appropriée, en fonction de l'erreur. –
Une @batchSize de cette taille entraînera l'escalade de verrouillage, sauf si elle a été spécifiquement désactivée par diverses méthodes. – etliens