SQL la vitesse d'exécution de l'insert?

Je suis d'effectuer quelques test sur sql server et je veux obtenir le meilleur insérer vitesse possible.
La déclaration que j'utilise est quelque chose comme ceci:

INSERT INTO db_Test_databse..tbl_test with(rowlock)  
   (  joinid, date_key,   
      col1, col2,col3,col4, col5, col6, col7, col8, col9, col10,  ...     
   )  

SELECT  tabid as joinid, 
        date_key,
        rec_type,  
        col2,  
        dbo.udf_convert_hex_to_dec(col3),  
        col4, col5, col6, col7, col8,  
        dbo.udf_convert_hex_to_dec(col9),  
        dbo.udf_convert_hex_to_dec(col10),  
        ...
from source_table f

Il y a 25 colonnes; la plupart d'entre eux sont de type bigint ou int.

J'ai laissé tomber tous les index de la table de destination à l'exception de la clé primaire qui est un champ d'identité.

Des conseils sur la façon d'améliorer les performances de plus?

P. s. Dans ce formulaire, j'ai une vitesse moyenne de 16.000 lignes /sec.

  • dbo.udf_convert_hex_to_dec est de vous tuer. La version de SQL Server que vous utilisez? Il y a built-ins pour faire cette conversion.
  • Je suis à la recherche étrangement à la udf_convert_hex_to_dec fonction. Les insertions ne peuvent être effectuées plus rapidement jusqu'à un certain point, certains facteurs sont des indices physiques et de performances. L'exécution d'une requête de l'analyseur contre elle, je parie que le select est la partie lente en raison de la fonction.
  • Fonctions Définies par l'utilisateur peuvent être lents. Pouvez-vous ne pas jeter de l'hex directement à la décimale - CAST (col9 COMME séparateur Décimal(4)) par exemple>?
  • le coût de la sélection est de 9% du coût de la table de la bobine est de 32%, le cluster insérer les coûts de 58%