Typ pisanego kodu jest bardzo podatny na wstrzyknięcie SQL. Zamiast przetwarzać czytnik tak, jak Ty, możesz po prostu użyć właściwości RecordsAffected, aby znaleźć liczbę wierszy w czytniku.
EDYCJA:
Po przeprowadzeniu pewnych badań różnica, którą widzisz, jest różnicą projektową między połączeniem kontekstowym a zwykłym połączeniem. Peter Debetta napisał o tym na blogu:
„Połączenie kontekstowe jest napisane w taki sposób, że pobiera tylko jeden wiersz na raz, więc dla każdego z 20 milionów niektórych nieparzystych wierszy kod pytał o każdy wiersz osobno. Jednak przy użyciu połączenia niekontekstowego żąda 8K wartości wierszy na raz."
http://sqlblog.com /blogs/peter_debetta/archive/2006/07/21/context-connection-is-slow.aspx