|
Где можно почитать о приемах оптимизации программы (работа с БД)?
|
|||
---|---|---|---|
#18+
В общем моя программа работает слишком медленно, а именно часть по работе с БД через ADO .Хочу заставить ее работать побыстрее. Есть ли где нибудь в сети информация посвященная такой оптимизации? Какие функции работают быстрее, какие медленее. У меня сейчас довольно часто используется recordset.filter, чувствую именно он меня тормозит. Сейчас перевожу на find. Может есть какие-то особые приемы? А вообще работа базы связанна с большим количеством текстовых значений (полей Memo). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2003, 11:22 |
|
Где можно почитать о приемах оптимизации программы (работа с БД)?
|
|||
---|---|---|---|
#18+
Не делай БОЛЬШИЕ выборки,это неприличный стиль работы с БД SQL. Фильтр по возможности не используй, он предназначен для фильтрации немногих записей из набора. Работа приблизительно такая, выбрал нужную запись, поработал, освободил. Дальше следующая запись и т.д. .... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2003, 13:53 |
|
Где можно почитать о приемах оптимизации программы (работа с БД)?
|
|||
---|---|---|---|
#18+
Можно (и лучше) использовать сохраненые параметрические запросы вместо Filter (хотя, если учесть, что курсор клиентский, т.б. записи кешированны на клиенте (не совсем точное отличие курсора клиентского, но сойдет), то метод Filter должен работать достаточно шустро. Но влюбом случае DennisS'у нужно поподробнее расказать про задачу и вслать кусок кода, который более всего тормозит прогу. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2003, 13:58 |
|
Где можно почитать о приемах оптимизации программы (работа с БД)?
|
|||
---|---|---|---|
#18+
Кусок кода выслать не могу - он у меня дома :) Программа такая: 1. Есть дайджест с письмами, присланными на email форум. Я его читаю. Определяю чообщение представляет собой вопрос или ответ. Если вопрос, то добавляю его просто. Если ответ, то ищу вопрос и делаю на него ссылку. Так вот этот процесс поиска вопроса и занимает много времени. Количество сообщений измеряется тысячами... 2. Есть база .mdb с заполненными вопросами-ответами. Около 3000 записей. Объем 13Мб. Читаю базу. Все сообщения добавляю в TreeView. Процесс добавления в TreeView занимает тоже прилично времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2003, 16:44 |
|
Где можно почитать о приемах оптимизации программы (работа с БД)?
|
|||
---|---|---|---|
#18+
3000 записей? А разве в хелпе по акцессу нет описания по оптимизации? Вообще-то, с текстовыми полями особо убыстрить не получится, или нужно полное совпадение? В последнем случае могу подкинуть идею, но это потребует немного кодирования.. Про TreeView ничего сказать не могу - хотя на код заполнения можно было бы и взглянуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2003, 16:51 |
|
Где можно почитать о приемах оптимизации программы (работа с БД)?
|
|||
---|---|---|---|
#18+
Можно идею с текстовыми (Memo) полями в студию? Я помню в моей древней молодости был такой Turbo C++. И там была такая фича, как измерение быстродействия каждой строки программы: свернуто (для функций, процедур), развернуто для каждой строки (или у меня белая горячка...). Очень помогало в отладке быстродейтвия. В VB .NET такого нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2003, 17:11 |
|
Где можно почитать о приемах оптимизации программы (работа с БД)?
|
|||
---|---|---|---|
#18+
Идея простая - дополнительно к тексту хранить в отдельном поле hash или crc32 совместно с длинной строки (текста), искать будет быстрее, попадание 99% процентов, индекс с условием 'and' тормозить не должен. Но алгоритм реализовывать нужно на чем-нить более быстром, чем vb или access. Кажись, это встроено в .net, но где именно не помню :( исходников на си - тучи. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2003, 17:27 |
|
Где можно почитать о приемах оптимизации программы (работа с БД)?
|
|||
---|---|---|---|
#18+
Все-таки вышли куски кода, а то гадаем на кофейной гуще. Раскажи про то, где у тебя стоят индексы? БД на чем? Сжимаешь? ADO какое? Какой типа рекордсета открыт? Почему переходишь на Find, а не на Seek? TreeView заполняешь сразу или только Родителей, а Children в момент обращения? P.S. Поиск по 3000 записям даже с условием Like "*" & Что-то "*" не должен особо тормозить, да и 13 Мб многовато (хотя м.б. полей много) Так что давай все поподробнее P.S.S. Быстродействие мерь функцией Public Declare Function timeGetTime Lib "winmm.dll" () As Long И прийдется делать это ручками :-( ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2003, 09:21 |
|
Где можно почитать о приемах оптимизации программы (работа с БД)?
|
|||
---|---|---|---|
#18+
>Все-таки вышли куски кода, а то гадаем на кофейной гуще. Вчера пришел домой поздно, комп не включал. Код не забрал. :( Сорри. Раскажи про то, где у тебя стоят индексы? Индексы стоят на полях Код Вопроса, Код ответа. - БД на чем? Access 2000 база. - Сжимаешь? Нет. Это не снизит быстродействие? - ADO какое? 2.6 - Какой типа рекордсета открыт? Я рекордсет открыл один раз и потом его гоняю. Тип Dynamic. - Почему переходишь на Find, а не на Seek? Хммм... А какая разница? Seek быстрее? Если да, то откуда знаете. Я тоже хочу об этом почитать. TreeView заполняешь сразу или только Родителей, а Children в момент обращения? Я заполняю полностью. Но, наверное, думаю сделаю так, чтобы Childrenы заполнялись в момент открытия ветки. - P.S. - Поиск по 3000 записям даже с условием Like "*" & Что-то "*" не должен - особо тормозить, да и 13 Мб многовато (хотя м.б. полей много) Полей не много. Сами поля большие. 1 дайджест занимает 50 Кб. Переносится в базу практически полностью. Вот 200 дайджестов уже 10 метров. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2003, 12:28 |
|
Где можно почитать о приемах оптимизации программы (работа с БД)?
|
|||
---|---|---|---|
#18+
>- БД на чем? >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ы >заполнялись в момент открытия ветки. Будет шустрее ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2003, 09:23 |
|
|
start [/forum/topic.php?fid=60&tid=2171379]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 349ms |
total: | 509ms |
0 / 0 |