Typ kódu, který píšete, je vysoce citlivý na SQL Injection. Spíše než zpracovávat čtečku jako vy můžete jednoduše použít vlastnost RecordsAffected Property k nalezení počtu řádků ve čtečce.
EDIT:
Po provedení průzkumu je rozdíl, který vidíte, záměrným rozdílem mezi kontextovým připojením a běžným připojením. Peter Debetta o tom napsal blog a píše:
"Kontextové připojení je napsáno tak, že načítá pouze řádek najednou, takže pro každý z 20 milionů lichých řádků kód požadoval každý řádek zvlášť. Při použití bezkontextového připojení však požaduje hodnotu 8 000 řádků najednou."
http://sqlblog.com /blogs/peter_debetta/archive/2006/07/21/context-connection-is-slow.aspx