Donc un site sur lequel je travaille migre vers un nouveau flux de données. Le flux de données actuel est alimenté par un site FTP et me est présenté dans deux fichiers dénomés. Ceci est ensuite poussé dans deux tables dans un serveur MS SQL 2005 que le site utilise alors pour exécuter toutes les recherches et ainsi de suite (site immobilier). Le problème est, le nouveau flux de données est normalisé, il n'y a pas qu'un seul fichier, mais 12. Tous ces fichiers ont été fusionnés dans une vue pour imiter les anciennes tables héritées. C'est lent car chaque rangée doit avoir ses données démormilisées de "a, d, e" à "Range, Refrigerator, Dishwasher". Il y a au maximum 17 de ces changements par ligne qui doivent être faits. Donc, ma pensée était de faire les transformations une fois, et les enregistrer dans une table en tant que valeurs statiques et non à travers la vue. Cela fonctionne mais il faut plus de 40 minutes pour obtenir les données dans des tableaux vides. Il faut 1 heure 45 minutes pour mettre à jour les lignes nécessaires et insérer les nouvelles lignes. La clé primaire ici est un char (8) pour tout. J'ai également une date à jour pour chaque rangée. De quoi ai-je besoin pour accélérer ce processus? Quels changements dois-je apporter au serveur, aux groupes de fichiers, aux index, aux tables, etc.?Sql 2005 Table à Table fusionner avec certaines données de transformation
Aussi quelques autres informations, chaque ligne est juste autour de 7K, le serveur est en cours d'exécution SQL 2005 Workgroup Edition, j'ai à la fois un dev et une boîte de production afin que je puisse facilement tester n'importe quoi. Toute aide serait sollicitée, mon but est d'obtenir 10 à 20 minutes, pas 47 minutes.
Modifier, On m'a demandé d'afficher la vue, voici l'un des fichiers fusionnés. Avoir des problèmes en affichant l'autre, semble les muscler tous ensemble après la prochaine Union tous.
select LN,null as [PropertyType],ST,CTGF,TYP,UD,null as [LAG],null as [LO],null as [OFFICE_PHONE],null as [AGENT_FORM_NAME],
null as [OFFICE_FORM_NAME],LP,HSN,CP,STR,null as [UN],CIT,ZP,ADI,AR,null as [AREA_Name],SUB,CNY,RMS,BR,BTH,MBB,CARS,dbo.listLookupToString(gar,'a,Attached,b,Detached,c,1 Car Garage,d,1.5 Car Garage,e,2 Car Garage,f,2.5 Car Garage,g,3 Car Garage,h,3+ Car Garage,m,Garage Door Opener(s) (Auto),n,Transmitter(s),o,Carport,p,Heated,q,Leased,r,Owned,s,Underground,u,None,v,Deeded Sold Separately,w,On-Site,x,Off-Site,z,Tandem') as GAR,PKN,
PAR,FP,BLT,LSZ,ACR,WF,BMT,MOD,TAX,TXY,ASM,MBS,dbo.listLookupToString(MBF,'c,Carpet,h,Hardwood,p,Parquet,v,Vinyl,t,Ceramic Tile,o,Other') as MBF,B2S,dbo.listLookupToString(B2F,'c,Carpet,h,Hardwood,p,Parquet,v,Vinyl,t,Ceramic Tile,o,Other') as B2F,B3S,dbo.listLookupToString(B3F,'c,Carpet,h,Hardwood,p,Parquet,v,Vinyl,t,Ceramic Tile,o,Other') as B3F,B4S,dbo.listLookupToString(B4F,'c,Carpet,h,Hardwood,p,Parquet,v,Vinyl,t,Ceramic Tile,o,Other') as B4F,LRS,dbo.listLookupToString(LRF,'c,Carpet,h,Hardwood,p,Parquet,v,Vinyl,t,Ceramic Tile,o,Other') as LRF,DRS,dbo.listLookupToString(DRF,'c,Carpet,h,Hardwood,p,Parquet,v,Vinyl,t,Ceramic Tile,o,Other') as DRF,KTS,dbo.listLookupToString(KTF,'c,Carpet,h,Hardwood,p,Parquet,v,Vinyl,t,Ceramic Tile,o,Other') as KTF,FRS,FRF,REMARKS_INTERNET,REMARKS,
null as [RE1],null as [RE2],null as [RE3],null as [RE4],null as [RE5],null as [RE6],null as [RE7],null as [RE8],null as [RE9],
null as [RE10],A1N,A1S,A1F,A2N,A2S,A2F,A3N,A3S,A3F,A4N,A4S,A4F,A5N,A5S,A5F,GS,GSD,JH,JHD,HS,HSD,OT,OSD,FEA,dbo.listLookupToString(OTR,'a,1st Floor Bedroom,b,Darkroom,c,Den/Office/Study,d,Enclosed Balcony,e,Exercise Room,f,Family Room,g,Gallery/Foyer,h,Great Room,i,In-Law Arrangement,j,Kitchen Second,k,Library,l,Loft,m,Maids Room,n,Porch - Enclosed,o,Porch - Screened,p,Recreation,q,Sitting Room,r,Sunroom/Florida Room,t,Utility/Laundry - 1st Floor,u,Utility/Laundry - 2nd Floor,v,Workshop') as OTR,STY,TPE,
null as [TPC],null as [TMU],null as [TMF],DIR,null as [DR1],null as [DR2],null as [DR3],null as [UFL],null as [FLN],ASF,
null as [PTA],null as [CAA],EXP,null as [UFE],null as [TNU],null as [UF1],null as [RM1],null as [BR1],null as [BT1],
null as [UF2],null as [RM2],null as [BR2],null as [BT2],null as [UF3],null as [RM3],null as [BR3],null as [BT3],null as [UF4],
null as [RM4],null as [BR4],null as [BT4],null as [GRI],null as [NOI],null as [AP1],null as [AP2],null as [AP3],null as [AP4],
null as [AZN],null as [SLN],null as [ASQ],null as [TLA],null as [RU],null as [LT],null as [AML],null as [BIM],null as [CUU],
null as [FMT],null as [LND],null as [LOCAT],null as [PTU],null as [GSI],null as [TAE],null as [GSA],null as [TO],
null as [UNT],null as [SUBTPE],null as [RP],null as [MIN],null as [MAX],null as [BSQ],null as [BAG],null as [BUT],
null as [APT],null as [OFC],null as [STO],null as [DID],null as [NDK],null as [CEMXF],null as [CEMXI],null as [CEMIF],
null as [CEMII],null as [HT],null as [GD],null as [PARK],null as [DBL],null as [MK],PHOTOCOUNT as [NBR_PHOTOS],
null as [SUPP_PHOTOS],SP,CLOSED_DATE
from rets_de where st<>'CLSD'
J'ai posté une partie de la vue dans la question puisqu'elle était plus longue que les 600 caractères autorisés. – Josh
Je pensais à ça avant de faire l'UDF, mais j'étais dans un moment critique. Vous pouvez également avoir plusieurs valeurs à rechercher puisque le fichier r.gar est une liste d'identifiants séparés par des virgules pour GarageLookup.Je pensais que vous auriez dû utiliser un UDF ou une sous-requête pour cette façon ou une autre alors je viens d'écrire la partie UDF. – Josh
Malheureusement, je pense que vous trouverez que si vous avez commenté le fichier UDF de vos choix, tout sera beaucoup plus rapide. Étant donné que vous effectuez plusieurs recherches pour chaque ligne, vous pouvez essayer de faire en sorte que votre UDF n'ait pas besoin d'analyser les valeurs de chaîne à chaque fois et de créer autant de fonctions UDF que nécessaire, une par analyse de la liste. transmis et utiliser en interne une table de recherche - ne pas avoir à analyser une liste délimitée par des virgules 10 fois pour chaque ligne devrait accélérer un peu les choses. – Relster