Si j'ai un lot de deux instructions SELECT
différentes, est-il possible qu'elles soient exécutées en parallèle (si l'Optimiseur SQL le considère comme la méthode d'exécution la plus efficace)?
Si la première instruction SELECT
sélectionne dans une table temporaire et que la deuxième instruction SELECT
est ensuite insérée dans cette même table temporaire, cela l'empêche-t-il d'être possible d'exécuter les deux instructions dans parallèle?
(Je suppose que les réponses sont oui et oui :).
Les instructions de lot ne sont jamais exécutées en série que dans l'ordre où elles apparaissent dans le lot.
Maintenant, si vous avez deux instructions envoyées au serveur par deux lots différents, elles s'exécuteront indépendamment et essentiellement simultanément (verrouillage et verrouillage de côté).
Prenons par exemple le code suivant:
CREATE TABLE #t
(
i int
);
INSERT INTO #t (i) VALUES (0);
Le CREATE TABLE
s'exécute toujours avant le INSERT INTO
déclaration. Considère ceci:
SELECT 1;
SELECT 2;
Le code ci-dessus sera toujours exécuté dans l'ordre, c'est-à-dire SELECT 1
s'exécute d'abord , puis une fois terminé, SELECT 2
s'exécute.
Il existe plusieurs façons d'exécuter simultanément des lots indépendants, y compris l'utilisation de Multiple Active Result Sets, ou MARS , mais aucun d'entre eux n'affecte le traitement en série des instructions au sein d'un même lot.