Страница: 1 |
Страница: 1 |
Вопрос: VBScript_SQLServer2000
Добавлено: 17.08.04 13:15
Автор вопроса: St@s | ICQ: 289429121
Привет!
Работаю над архивом SCADA системы. Использую встроеный в SCADA систему VBScript и SQLServer 2000. Каждую секунду в БД записываются состояния всех объектов SCADA системы. Надо последовательно вычитывать строки из БД для просмотра состояния объектов за какой то промежуток времени, чтобы получилось типа "кино".
Есть проблемка в скорости вычитывания данных из БД.
В начале таблицы вычитывает быстро. Можно вести просмотр с интервалом в 1 секунду и меньше. Но если строк в таблице больше 50 тыс. скорость снижается.
Для доступа к БД использую следующий код:
Dim rs As Object
Set rs = CreateObject("ADODB.Recordset")
rs.open "day_" & user_dd, "DSN=movie;UID=;PWD=;", 0, 1, 2
...
hours = rs.fields("hour")
mins = rs.fields("min")
sec = rs.fields("sec")
...
Посоветуйте как быть.
Заранее спасибо.
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
shareman
Вопросов: 11
Ответов: 37
Профиль | | #1
Добавлено: 20.08.04 00:55
1. Проиндексировать таблицу
2. Написать stored procedure с нормальным критерием, а не тащить всю таблицу целиком - ты же сервер душишь.
3. Подключаться не через строчку каждый раз, а явно объявить connection.
4. Вместо rs.fields("min" - rs!min
Номер ответа: 2
Автор ответа:
St@s
ICQ: 289429121
Вопросов: 4
Ответов: 9
Профиль | | #2
Добавлено: 20.08.04 10:30
Переделал таким образом:
Dim rs As Object
Dim cn As Object
user_day = "day_" & user_dd
Set cn = CreateObject("Adodb.Connection"
cn.Provider = "sqloledb"
ProvStr = "Server=HEXatabase=mydb;UID=stas;pwd=123;"
cn.Open ProvStr
Set rs = CreateObject("ADODB.Recordset"
rs.ActiveConnection = cn
rs.open "select * from " & user_day & " where hour = " & hours.value & " And min = " & mins.value
...
Вместо rs.fields("min" - rs!min - почему так, объясните.
И об stored procedure можно немного прояснить.
Заранее огромное спасибо.
P.S. В VBScript и SQL новичок.
Номер ответа: 3
Автор ответа:
St@s
ICQ: 289429121
Вопросов: 4
Ответов: 9
Профиль | | #3
Добавлено: 26.08.04 17:57
А как работать с rs.GetRows?
И всетаки чем запись rs.fields("min" отличается от такой записи rs!min.
Пожалуйста просветите!
Заранее спасибо.