2010-11-29 6 views
2

Si tout ce que je fais est d'insérer plusieurs lignes de données dans une seule table dans SQL Server 2008, ce qui est plus rapide?Paramètre validé par table par rapport à plusieurs lignes d'insertion Question de performance à insérer dans SQL Server 2008

A Table-Valued Parameter ou a single insert statement with multiple values? Où dans ce scénario simple préférez-vous l'un plutôt que l'autre?

+0

duplication possible de [SQL Server: fonctions de table par rapport aux procédures stockées] (http://stackoverflow.com/questions/4254814/sql-server-valued-functions-vs-stored-procedures) –

+0

http : //stackoverflow.com/search? q = [serveur-sql] + table + valeur + fonction + vs –

+0

Je ne parle pas vraiment de procs stockés ou de fonctions Table-Valued, mais plutôt de paramètres de table. Ce qui pourrait potentiellement être passé à un proc stocké, ou une fonction, ou utilisé dans une requête ad-hoc. – Dugan

Répondre

1

Si je comprends bien la question, j'irais avec le paramètre Table-Valued. Sinon, je pense que la liste des paramètres deviendrait rapidement ingérable. Vous ne voudriez pas vous retrouver avec quelque chose comme:

insert into YourTable 
    (col1, col2, ..., colN) 
    values 
    (@Row1Col1, @Row1Col2, ..., @Row1ColN), 
    (@Row2Col1, @Row2Col2, ..., @Row2ColN), 
    ... 
    (@RowMCol1, @RowMCol2, ..., @RowMColN) 
+0

Eh bien non, je ne voudrais pas le taper, mais il serait assemblé par programmation de toute façon. J'essaie de déterminer lequel, si l'un ou l'autre, est réellement plus efficace. – Dugan

0

Puisque les deux opérations insèrent des données dans une table, la question devient; "L'utilisation d'une procédure stockée pour faire des insertions de table est-elle trop lourde à gérer pour mon système?"

Votre système autorise-t-il les insertions directes dans les tables depuis l'application? Si oui alors allez-y avec l'insertion directe. Je préfère utiliser les procédures stockées car cela me permet d'ajouter des fonctions d'audit, de logique d'erreur, etc., ce qui me fait me sentir mieux que de déverser des données directement dans une table.