onze sponsors
Ons datawarehouse leest veel data uit een Progress database. Er is een tabel met zo'n 20 miljoen records die maar liefst 3,5 uur uur duurt om uit te lezen.
Als er een filter wordt toegepast (ik heb maar een tiende nodig) worden er wel minder rijen uitgelezen, maar de doorlooptijd blijft even lang. Dat lijkt een index probleem..., maar de index bestaat wel. De connectie met de progress database gebeurt door middel van een odbc connectie geleverd door Progress. Wellicht dat deze op de een of andere niet alle indexen meeneemt. Zou dit met rechten te maken kunnen hebben?
Is er iemand die ervaring heeft met het lezen uit Progress en dit op een andere manier doet dan via een odbc connectie?
Kan het zijn, dat het filter niet aan de Progress kant wordt uitgevoerd, maar aan de kant van SQL Server? Indien ja, dan wordt alle data alsnog overgehaald.
Progress heeft mij al meerdere malen kopzorgen bezorgd. In Progress wordt geen maximale datalengte afgedwongen. Stel je hebt een char veld met displaygrootte van 20, dan maakt de ODBC driver daarvan char(40). Als zo'n veld echter meer dan 40 tekens bevat, geeft de ODBC driver een foutmelding. Enige oplossing in zo'n geval is het aanpassen van de betreffende data in Progress...
Het handigste is wellicht om vanuit Progress een dump te maken en dat in te lezen in SQL Server.