Страница: 1 |
Страница: 1 |
Вопрос: как ускорить выполнение программы
Добавлено: 19.08.04 12:16
Автор вопроса: Boksy
Подскажите пожалуста, а как ускорить выполнение программы написанной на VBA (ACCESS, в обработчике событий), мой SQL запрос(запускаемый из VBA) работает слишком долго(очень большая таблица), но он необходим. Возможно ли сначала наложить фильтр на таблицу, а потом по выбранным данным сделать запрос?
Ответы
Всего ответов: 2
Номер ответа: 1
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #1
Добавлено: 19.08.04 12:47
О производительности SQL-запросов. В одной книжке - э... не помню, хоть постянно ей пользовался.. - по VB сказано, что долго выполняются сложные SQL запросы, по возможности надо разбить на несколько более простых. Ещё если в условии WHERE что-то отбирается по числовому значению, можно сделать индекс по этому полю и это возможно ускорит процесс. Разбивать на части следует что-то типа SELECT ... [INNER] JOIN ... Универсальных советов нет, надо экспериментировать, пробовать, сравнивать время на операции. Ты напиши хоть текст своего запроса, где и как его используешь, сколько записей в таблице?
Номер ответа: 2
Автор ответа:
Boksy
Вопросов: 15
Ответов: 7
Профиль | | #2
Добавлено: 19.08.04 13:23
Dim strSQL As String
strSQL = "SELECT * FROM Rebuild_m3d WHERE V_A IN (SELECT DISTINCT n2.V_A FROM Rebuild_m3d n1 LEFT JOIN Rebuild_m3d n2 ON n1.MODEL = n2.MODEL AND n1.V_A <> n2.V_A) AND MODEL IN (SELECT DISTINCT n2.MODEL FROM Rebuild_m3d n1 LEFT JOIN Rebuild_m3d n2 ON n1.MODEL = n2.MODEL AND n1.V_A <> n2.V_A) ORDER BY id;"
 ebug.Print strSQL
Me.RecordSource = strSQL
он используется в обработчике событий, это весь код, в таблице около 2600 записей