web-dev-qa-db-fra.com

SSIS OLE DB Source Editor Mode d'accès aux données: "Commande SQL" VS "Table ou vue"

Dans les offres, j'exécute une tâche de flux de données et je me demande quelle est la différence dans les coulisses entre l'utilisation de "commande de table ou d'affichage" vs "commande sql" pour le mode d'accès aux données pour un OLE DB La source. Par exemple, supposons que j'ai une table appelée MyTable avec 5 colonnes (colonne1, colonne2, colonne3, colonne4, colonne5), mais je ne suis intéressé que par la colonne1. Je vois ces 2 options:

  1. Je peux utiliser une "table ou vue" et sélectionner "MyTable" puis cochez uniquement "Colonne 1" dans le volet "Colonnes".
  2. Ou je peux utiliser "Commande SQL" et utiliser cette requête "Sélectionnez Colonne1 de MyTable".

Lorsque j'ai dirigé un test, la deuxième option semblait courir beaucoup plus vite, mais j'aimerais que la confirmation de ce qui se passe dans des scènes lorsque j'utilise "table ou affichage" puis sélectionner certaines colonnes. J'apprécierais toute idée que tout le monde puisse fournir.

(Dans mon étui d'utilisation particulière, MyTable est une table de base de données Azure hors site et la colonne2 présente de grandes quantités de XML à l'intérieur. Je suppose que toutes les colonnes arrivaient sur le fil lorsque j'ai utilisé "table ou vue")

7
jessieloo

Je ferai une petite expérience. Je vais utiliser SQL Profiler pour voir ce qui se passe en arrière-plan tout en utilisant un OLEDB Source Dans les deux cas:

J'ai une table nommée dbo.Table_1 qui contient 3 colonnes (ID, nom, département)

J'ai utilisé SQL Profiler pour régler la base de données contenant cette table et j'ai utilisé le mode d'accès 2, sous les résultats:

table ou affichage - sélectionner uniquement la colonne ID

Le profileur montre que la commande suivante est exécutée

SELECT * FROM [dbo].[Table_1]

Même si vous sélectionnez une seule colonne, la source OLEDB lit toutes les données puis filtre les colonnes après les avoir tous lues.

enter image description here

Commande SQL

Le profileur montre que la commande suivante est exécutée

SELECT [ID] FROM [dbo].[Table_1]

enter image description here


Récemment, j'ai publié un article qui contient plus de détails, vous pouvez le vérifier sur le lien suivant:

7
Hadi