Cours d'optimisation SQL (3) - utilisation raisonnable des tables temporaires

Colonne SQL

Résumé des bases de SQL

Résumé des connaissances avancées SQL

Aujourd'hui, nous allons parler des techniques d'optimisation des tables temporaires

La table temporaire, comme son nom l'indique, n'est qu'une table temporaire. La première est une table temporaire locale, qui ne peut être utilisée que sur la page de requête actuelle. Elle ne peut pas être utilisée pour les requêtes nouvellement ouvertes. L'autre est une table temporaire globale, non peu importe le nombre de pages de requête ouvertes.


Table temporaire locale

Pour les tables temporaires locales, ajoutez # devant le nom de la table. Examinons les caractéristiques des tables temporaires locales.

Nous créons une nouvelle page de requête et entrons le code suivant:


SELECT TOP 10 * INTO #temp
FROM sales.Temp_Salesorder;
SELECT * FROM #temp;

Les résultats sont les suivants:

Cours d'optimisation SQL (3) - utilisation raisonnable des tables temporaires

Ouvrons une nouvelle page et ressaisissons le code suivant:


SELECT * FROM #temp;

Les résultats sont les suivants:

Cours d'optimisation SQL (3) - utilisation raisonnable des tables temporaires

Prouvez que la table temporaire locale ne peut être exécutée que sur la page courante.

Table temporaire
globale La table temporaire globale peut être utilisée en ajoutant ## devant le nom de la table. Elle peut être utilisée lors de l'ouverture de n'importe quelle page de requête.

Répétez les étapes ci-dessus:


SELECT TOP 10 * INTO ##temp
FROM sales.Temp_Salesorder
SELECT * FROM ##temp;

Le résultat est le même que ci-dessus:

Cours d'optimisation SQL (3) - utilisation raisonnable des tables temporaires
Ouvrons une nouvelle page:

SELECT * FROM ##temp;

Le résultat est toujours le même. Prouvez que toutes les pages de requête de la table temporaire globale peuvent être utilisées.

Méthode d'optimisation de la table temporaire Après avoir
introduit la table temporaire, expliquons comment l'utiliser pour l'optimiser

L'optimisation de table temporaire est généralement utilisée lorsqu'il y a plus de sous-requêtes, ce qui est également appelé requête imbriquée. Nous écrivons la sous-requête suivante:


SELECT * FROM sales.Temp_Salesorder
WHERE SalesOrderDetailID IN
(SELECT SalesOrderDetailID FROM sales.SalesOrderDetail
WHERE UnitPrice IN
(SELECT UnitPrice FROM sales.SalesOrderDetail WHERE UnitPrice>0)
)

(Astuce: le code peut glisser à gauche et à droite)

Il s'agit d'une sous-requête imbriquée à deux niveaux relativement simple, jetons un coup d'œil à l'exécution:

Cours d'optimisation SQL (3) - utilisation raisonnable des tables temporaires

Vous pouvez voir que la lecture logique ici est relativement élevée.

Utilisons la table temporaire pour revoir la situation d'exécution. Nous insérons les résultats de la requête des premier et deuxième niveaux dans #temp, puis nous interrogeons les résultats à partir de la table temporaire.


SELECT SalesOrderDetailID INTO #temp FROM sales.SalesOrderDetail
WHERE UnitPrice IN (SELECT UnitPrice FROM sales.SalesOrderDetail WHERE UnitPrice>0)

SELECT * FROM sales.Temp_Salesorder
WHERE SalesOrderDetailID IN
(SELECT SalesOrderDetailID FROM #temp)

La mise en œuvre est la suivante:

Cours d'optimisation SQL (3) - utilisation raisonnable des tables temporaires

Cours d'optimisation SQL (3) - utilisation raisonnable des tables temporaires

Par rapport à la dernière lecture logique, le nombre de lectures logiques est doublé. Lors de l'ajustement des performances de la requête, si la valeur de lecture logique diminue, cela indique que les ressources du serveur utilisées par la requête sont réduites et que les performances de la requête sont améliorées. Si la valeur de lecture logique augmente, cela signifie que les mesures d'ajustement ont réduit les performances de la requête. Lorsque les autres conditions restent inchangées, moins une requête utilise de lectures logiques, plus son efficacité est élevée et plus la vitesse de la requête est rapide.

Par conséquent, nous pouvons voir que les tables temporaires peuvent améliorer l'efficacité des requêtes dans les requêtes imbriquées plus complexes.

La leçon d’aujourd’hui s’arrêtera ici. Si vous ne comprenez pas, vous pouvez laisser un message ci-dessous et je vous répondrai un par un.

Je suppose que tu aimes

Origine blog.51cto.com/15057820/2656462
conseillé
Classement