powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Где можно почитать о приемах оптимизации программы (работа с БД)?
11 сообщений из 11, страница 1 из 1
Где можно почитать о приемах оптимизации программы (работа с БД)?
    #32118100
DennisS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем моя программа работает слишком медленно, а именно часть по работе с БД через ADO .Хочу заставить ее работать побыстрее. Есть ли где нибудь в сети информация посвященная такой оптимизации? Какие функции работают быстрее, какие медленее. У меня сейчас довольно часто используется recordset.filter, чувствую именно он меня тормозит. Сейчас перевожу на find. Может есть какие-то особые приемы? А вообще работа базы связанна с большим количеством текстовых значений (полей Memo).
...
Рейтинг: 0 / 0
Где можно почитать о приемах оптимизации программы (работа с БД)?
    #32118280
sgs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не делай БОЛЬШИЕ выборки,это неприличный стиль работы с БД SQL. Фильтр по возможности не используй, он предназначен для фильтрации немногих записей из набора. Работа приблизительно такая, выбрал нужную запись, поработал, освободил. Дальше следующая запись и т.д. ....
...
Рейтинг: 0 / 0
Где можно почитать о приемах оптимизации программы (работа с БД)?
    #32118288
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно (и лучше) использовать сохраненые параметрические запросы вместо Filter (хотя, если учесть, что курсор клиентский, т.б. записи кешированны на клиенте (не совсем точное отличие курсора клиентского, но сойдет), то метод Filter должен работать достаточно шустро.
Но влюбом случае DennisS'у нужно поподробнее расказать про задачу и вслать кусок кода, который более всего тормозит прогу.
...
Рейтинг: 0 / 0
Где можно почитать о приемах оптимизации программы (работа с БД)?
    #32118546
DennisS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кусок кода выслать не могу - он у меня дома :)
Программа такая:
1. Есть дайджест с письмами, присланными на email форум. Я его читаю. Определяю чообщение представляет собой вопрос или ответ. Если вопрос, то добавляю его просто. Если ответ, то ищу вопрос и делаю на него ссылку. Так вот этот процесс поиска вопроса и занимает много времени. Количество сообщений измеряется тысячами...
2. Есть база .mdb с заполненными вопросами-ответами. Около 3000 записей. Объем 13Мб. Читаю базу. Все сообщения добавляю в TreeView. Процесс добавления в TreeView занимает тоже прилично времени.
...
Рейтинг: 0 / 0
Где можно почитать о приемах оптимизации программы (работа с БД)?
    #32118566
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3000 записей?
А разве в хелпе по акцессу нет описания по оптимизации? Вообще-то, с текстовыми полями особо убыстрить не получится, или нужно полное совпадение? В последнем случае могу подкинуть идею, но это потребует немного кодирования..
Про TreeView ничего сказать не могу - хотя на код заполнения можно было бы и взглянуть.
...
Рейтинг: 0 / 0
Где можно почитать о приемах оптимизации программы (работа с БД)?
    #32118604
DennisS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно идею с текстовыми (Memo) полями в студию?
Я помню в моей древней молодости был такой Turbo C++. И там была такая фича, как измерение быстродействия каждой строки программы: свернуто (для функций, процедур), развернуто для каждой строки (или у меня белая горячка...). Очень помогало в отладке быстродейтвия. В VB .NET такого нет?
...
Рейтинг: 0 / 0
Где можно почитать о приемах оптимизации программы (работа с БД)?
    #32118639
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идея простая - дополнительно к тексту хранить в отдельном поле hash или crc32 совместно с длинной строки (текста), искать будет быстрее, попадание 99% процентов, индекс с условием 'and' тормозить не должен. Но алгоритм реализовывать нужно на чем-нить более быстром, чем vb или access. Кажись, это встроено в .net, но где именно не помню :( исходников на си - тучи.
...
Рейтинг: 0 / 0
Где можно почитать о приемах оптимизации программы (работа с БД)?
    #32118908
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все-таки вышли куски кода, а то гадаем на кофейной гуще.
Раскажи про то, где у тебя стоят индексы?
БД на чем?
Сжимаешь?
ADO какое?
Какой типа рекордсета открыт?
Почему переходишь на Find, а не на Seek?
TreeView заполняешь сразу или только Родителей, а Children в момент обращения?

P.S.
Поиск по 3000 записям даже с условием Like "*" & Что-то "*" не должен особо тормозить, да и 13 Мб многовато (хотя м.б. полей много)
Так что давай все поподробнее
P.S.S.
Быстродействие мерь функцией
Public Declare Function timeGetTime Lib "winmm.dll" () As Long
И прийдется делать это ручками :-(
...
Рейтинг: 0 / 0
Где можно почитать о приемах оптимизации программы (работа с БД)?
    #32119175
DennisS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Все-таки вышли куски кода, а то гадаем на кофейной гуще.
Вчера пришел домой поздно, комп не включал. Код не забрал. :( Сорри.
Раскажи про то, где у тебя стоят индексы?
Индексы стоят на полях Код Вопроса, Код ответа.

- БД на чем?
Access 2000 база.

- Сжимаешь?
Нет. Это не снизит быстродействие?

- ADO какое?
2.6

- Какой типа рекордсета открыт?
Я рекордсет открыл один раз и потом его гоняю. Тип Dynamic.

- Почему переходишь на Find, а не на Seek?
Хммм... А какая разница? Seek быстрее? Если да, то откуда знаете. Я тоже хочу об этом почитать.

TreeView заполняешь сразу или только Родителей, а Children в момент обращения?
Я заполняю полностью. Но, наверное, думаю сделаю так, чтобы Childrenы заполнялись в момент открытия ветки.

- P.S.
- Поиск по 3000 записям даже с условием Like "*" & Что-то "*" не должен
- особо тормозить, да и 13 Мб многовато (хотя м.б. полей много)

Полей не много. Сами поля большие. 1 дайджест занимает 50 Кб. Переносится в базу практически полностью. Вот 200 дайджестов уже 10 метров.
...
Рейтинг: 0 / 0
Где можно почитать о приемах оптимизации программы (работа с БД)?
    #32119854
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>- БД на чем?
>Access 2000 база.
Поставь сервис-паки (№3)

- Сжимаешь?
Нет. Это не снизит быстродействие?
Увеличит, если повезет, то сжатие решит твои проблемы

>- ADO какое?
>2.6
Ставь SP или 2.7 и опять SP

>- Какой типа рекордсета открыт?
>Я рекордсет открыл один раз и потом его гоняю. Тип Dynamic.
Открой ...adOpenForwardOnly, adLockReadOnly
Однонаправленный, только чтение, т.е. самый быстрый

>- Почему переходишь на Find, а не на Seek?
>Хммм... А какая разница? Seek быстрее? Если да, то откуда знаете. Я тоже >хочу об этом почитать.
Разница прямо скажу больша. Как между запорожцем и Мерседесом
А прочитать об этом можно в Хелпе
...Searches the index of a Recordset to quickly locate the row that matches the specified values, and changes the current row position to that row.
Особо обрати на строчку ...quickly ...

>reeView заполняешь сразу или только Родителей, а Children в момент >бращения?
>Я заполняю полностью. Но, наверное, думаю сделаю так, чтобы Childrenы >заполнялись в момент открытия ветки.
Будет шустрее
...
Рейтинг: 0 / 0
Где можно почитать о приемах оптимизации программы (работа с БД)?
    #32120249
DennisS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо.
На выходных обязательно все попробую.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Где можно почитать о приемах оптимизации программы (работа с БД)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]