Как ускорить работу с RecordSet?

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Как ускорить работу с RecordSet?

Сообщение Fedorfx » 21.10.2003 (Вт) 12:22

Всем привет.
Есть вопрос по оптимизации кода для ускорения работы с рекордсет.

Dim Con As ADODB.Connection
Dim RS as ADODB.Recordset
Set Con = New ADODB.Connection
Con.ConnectionString = "DSN=Test;UID=;PWD=;"
Con.Open
Set rs=con.execute ("Select * from Tetstable while time betwen....... order by.....")
do while not(rs.eof)
......
rs.movenext
loop
Все дело в том что записей в таблице больше 1 000 000 а выборка по Select от 10 000 до 50 000
Сам селект занимает 3-5 сек а вот голый цикл, без исполнения процедуры обработки 30-40 сек.
Я понимаю что много записей, но может есть способ ускорить решение данной задачи?

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 21.10.2003 (Вт) 18:27

Почитай, интересно
http://www.relib.com/articles/article.asp?id=42

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 21.10.2003 (Вт) 20:25

Про вариант с массивом я знал, но все равно спасибо.
Мне честно говоря без разници - 30 сек или 25 - все равно долго.
Думал что есть способ который может повысить выборку из БД на порядок быстрее.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.10.2003 (Вт) 22:41

А какая проводится обработка? Может ее лучше осуществлять в самом запросе?
Lasciate ogni speranza, voi ch'entrate.

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 21.10.2003 (Вт) 22:52

Обработка производится в программе.
Селект возвращает данные за определенный промежуток времени.
Сам бы с радостью свалил работу на SQL но никак - сложные алгоритмы.Вот и получается - в рекордсете 20 000 записей и их нужно засунуть по определенным признакам в прогу, но переборка рекордсета сама по себе ресурсоемкая процедура получается.
Я для примера делал селект и просто MoveNext. 30 сек как не крути. И проц вроде пень 4 1700 ( один из первых ). Уже подумываю прикупить двухпроцессурную машину.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.10.2003 (Вт) 23:05

Это особо не поможет.
Лучше делай Stored процедуру в базе данных и заставляй работать сервер, а запросом получай уже конечные результаты.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 230

    TopList