|
Быстродействие Access
|
|||
---|---|---|---|
#18+
Здравствуйте. Подскажите, пожалуйста, какое решение в плане быстродействия предпочтительней? Для получение в VBA единичного значения выполняется ли быстрее функция DLookup (либо DMax, DMin и аналоги) или же быстрее будет вариант с CurrentProject.Connection.Execute(SQL).Filds(0)? Или же быстрее цикл Do - Loop? Просто у меня некоторые запросы открываются быстрее, некоторые - очень медленно, и я не могу уловить причину. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2017, 08:20 |
|
Быстродействие Access
|
|||
---|---|---|---|
#18+
Очень трудно сказать, в каком направлении быстрее побежит сферический конь... но в обычных условиях как правило быстрее всего работает DAO-запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2017, 08:27 |
|
Быстродействие Access
|
|||
---|---|---|---|
#18+
AkinaОчень трудно сказать, в каком направлении быстрее побежит сферический конь... но в обычных условиях как правило быстрее всего работает DAO-запрос. Ну почему DAO, ADO тоже имеет право на жизнь. Да и посовременнее будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2017, 08:35 |
|
Быстродействие Access
|
|||
---|---|---|---|
#18+
ROI , у автора приоритет - скорость. И уж не знаю почему, но если все необходимые структуры приготовлены и проинициализированы заранее, то как правило именно DAO-рекордсет быстрее всего отдаёт нужные данные... Впрочем, при условии, что и код, и данные находятся в одной и той же, причём локальной, БД. Если это неверно - то возможны варианты. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2017, 08:45 |
|
Быстродействие Access
|
|||
---|---|---|---|
#18+
У меня локальная среда. :^) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2017, 08:47 |
|
Быстродействие Access
|
|||
---|---|---|---|
#18+
Akina ROI , у автора приоритет - скорость. И уж не знаю почему, но если все необходимые структуры приготовлены и проинициализированы заранее, то как правило именно DAO-рекордсет быстрее всего отдаёт нужные данные... Впрочем, при условии, что и код, и данные находятся в одной и той же, причём локальной, БД. Если это неверно - то возможны варианты. Я вас огорчу (вы просто не умеете готовить ADO) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2017, 09:01 |
|
Быстродействие Access
|
|||
---|---|---|---|
#18+
Функция DLookup и т.п., собственно, формирует и выполняет DAO-запрос (в проекте - ADO), поэтому сравнивать быстродействие нет смысла. Преимущество функции в том, что при отсутствии записей она возвращает Null, а в запросе надо еще проверять BOF. Кроме того применение функции в другом запросе - часто единственная возможность в Аксе получить обновляемый набор записей. В свою очередь использование Execute(SQL) - дает возможность получить значение из запроса на нескольких таблицах или из другой БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2017, 09:36 |
|
Быстродействие Access
|
|||
---|---|---|---|
#18+
Анатолий ( Киев )Функция DLookup и т.п., собственно, формирует и выполняет DAO-запрос (в проекте - ADO), поэтому сравнивать быстродействие нет смысла. Преимущество функции в том, что при отсутствии записей она возвращает Null, а в запросе надо еще проверять BOF. Кроме того применение функции в другом запросе - часто единственная возможность в Аксе получить обновляемый набор записей. В свою очередь использование Execute(SQL) - дает возможность получить значение из запроса на нескольких таблицах или из другой БД. Проблемы быстродействия DLookup на 1000 раз обсосаны на всех форумах. Я себе писал свою для прилинкованных таблицах так и для ADO. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2017, 09:48 |
|
Быстродействие Access
|
|||
---|---|---|---|
#18+
Спасибо большое за ответы! Если позволите, хотела бы задать еще такой вопрос в тему. Имеют ли значение для быстродействия запросов такие факторы: 1) Явное объявление переменных в коде (в функции, которую использует запрос). 2) Не использование в коде переменных типа Variant, а прописывание других типов для переменных. 3) Ограничение длины текстовых полей в таблицах до минимума (в таблице, из которой запрос берет данные). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 10:45 |
|
Быстродействие Access
|
|||
---|---|---|---|
#18+
OkeTurelСпасибо большое за ответы! Если позволите, хотела бы задать еще такой вопрос в тему. Имеют ли значение для быстродействия запросов такие факторы: 1) Явное объявление переменных в коде (в функции, которую использует запрос). 2) Не использование в коде переменных типа Variant, а прописывание других типов для переменных. 3) Ограничение длины текстовых полей в таблицах до минимума (в таблице, из которой запрос берет данные). 1) Да 2) Да 3) Тут не знаю не тестировал никогда ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 10:58 |
|
Быстродействие Access
|
|||
---|---|---|---|
#18+
По третьему пункту: Если данные не обрабатываются из VBA-кода в цикле, то вы не заметите разницу в длине коротких и длинных имен полей таблицы. Если обработка в цикле из кода, то лучше (идеально для быстродействия) обращаться по индексам, т.е. поля в запросе выстраиваются в нужном фиксированном порядке и в коде идет обращение по их индексу, начиная с нуля. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 11:11 |
|
Быстродействие Access
|
|||
---|---|---|---|
#18+
Спасибо большое. Третий пункт, так и буду делать. :^) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 16:05 |
|
Быстродействие Access
|
|||
---|---|---|---|
#18+
Вроде вопрос был не о длине ИМЕН полей, а о длине самих полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 19:20 |
|
|
start [/forum/topic.php?fid=45&fpage=75&tid=1612398]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
159ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 262ms |
0 / 0 |