Ja, ik heb er even een boek bijgepakt waar de auteur de Sql-classes en de OleDb-classes op hun performance test.
De auteur heeft een testprogramma'tje geschreven die een miljoen iteraties doet en in die iteratie gaat hij gewoon iedere keer dezelfde column gaan ophalen uit een open datareader object.
Door gebruik te maken van de 'text' indexers deed de OleDB versie er zo'n 3.9 seconden over. Door gebruik te maken van de Sql variant, deed het programma er 3.12 seconden over.
Maar, er zijn natuurlijk wel nog manieren om de databank toegang te optimaliseren. Ipv gebruik te maken van de 'text' indexers, kun je ook de numerieke indexers gebruiken.
Dus ipv:
kun je ook
gaan gebruiken, dit werkt aanzienlijk sneller.
(Als het test-programma aangepast wordt naar numerieke indexers, doet de OleDb variant 0.67 seconden over die 1 milj. iteraties en de Sql variant doet er 0.23 seconden over).
Maar de Sql en OleDb database classes hebben ook nog een andere manier om data uit een datareader te halen, nl. functies zoals GetString, GetInt32, ... Deze functies zijn nog sneller natuurlijk omdat er niet meer moet geboxed worden.
Het testprogramma dat gebruik maakt van bovenstaande functies deed er 0.57 seconden over (OleDb variant) om 1 milj. iteraties te doen, en de Sql variant 0.23 seconden (evenveel dus als de gewone numerieke indexers).