Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > bReader.Close() Почему так долго?


Автор: Pankon 5.9.2006, 14:22
Такой код:
Код


querySql = "SELECT [User].* FROM  Campaign2User, [User]  " & _
                        "WHERE Campaign2User.UserID = [User].UserID"

1          Dim dbCmd As New System.Data.SqlClient.SqlCommand(querySql, sqlConn)
2          Dim dbReader As System.Data.SqlClient.SqlDataReader
3            dbReader = dbCmd.ExecuteReader(CommandBehavior.SingleResult And CommandBehavior.CloseConnection)
......
4            If usersDbReader IsNot Nothing Then
5                If Not usersDbReader.IsClosed Then
6                    usersDbReader.Close()
7                End If
8                usersDbReader = Nothing
9            End If

Строчки 1,2,3 работают относительно быстро, а вот строка 6 (usersDbReader.Close()) длится до 5-6 минут...... smile
С чем это может быть связано? Принимаются все предположения........

Автор: Domestic Cat 11.9.2006, 08:45
Таблицы Campaign2User и User  - большие?

Автор: Pankon 11.9.2006, 10:15
Да 

smile

Автор: Domestic Cat 11.9.2006, 10:32
Запуская такой запрос для датаридера, ты по сути тянешь все данные. Если ты выполнил ExecuteReader, и считал только первый ряд, все равно для закрытия ридера он должен будет освободить pipe, вытаскивая из него все оставшиеся данные. Либо меняй SQL запрос чтобы приходило меньше данных, либо попробуй вызвать Cancel на dbCmd.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)