|
Работа Access Jet
|
|||
---|---|---|---|
#18+
Есть база на SQL, клиентская часть на access 2003 присоединенные таблицы через ODBC когда база выросла более 10000000 записей базовый запрос (около 5000-6000 записей) начал тормозить (выполнение более 20 сек) Код: sql 1. 2. 3. 4.
построил покрывающий индекс, думал сейчас все взлетит, а запрос его не использует начал переписывать запрос под условия отбора Код: sql 1. 2. 3. 4.
и все заработало (выполнение около 2 сек) Кто-нибудь из ГУРУ может объяснить данное поведение access, т.к. клиентам приходиться ставить отдельную клиентскую часть в связи с переписыванием запроса, что не удобно ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2021, 15:31 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
BoxaXP Код: vbnet 1. 2.
-чем вызвано применение Clng?(надеюсь поля [ID_наработки], [Индекс_С],[Индекс_по] числовые) когда ответите на эти вопросы поймете почему ACCESS себя так ведет ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2021, 16:24 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
Поля числовые, но access без использования clng() передает их как строковые и скорость выполнения падает катастрофически до 1,5 - 2 минуты Разницу между Having и Where знаю, пробовал и так и этак при тестировании разницы никакой Вопрос почему Jet при использовании функций не использует индекс, а при явном указании числовых значений в запросе, использует ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2021, 17:38 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
BoxaXP Поля числовые, но access без использования clng() передает их как строковые ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2021, 17:43 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
BoxaXP т.к. клиентам приходиться ставить отдельную клиентскую часть в связи с переписыванием запроса, что не удобно Ну дык храните запрос в таблице. В запросах никогда не использую ссылки на поля формы. Это засада. (Не явное приведение к типу) Присоединенные таблицы(это есчё те костыли в производительности) Переходите на ADO и RecordSet и будет вам счастье. Пора по серьезному тискать Access. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 04:51 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
А если переделать в параметрический запрос, и передавать с форм параметрами? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 08:24 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
Ну дык храните запрос в таблице. Придется мудрить что-то с разделением по пользователям и привязывать каждому свой запрос в таблице В запросах никогда не использую ссылки на поля формы. Это засада. (Не явное приведение к типу) Это самый простой способ наложить условия, а функции использую чтобы уйти от неявного приведения типов Присоединенные таблицы(это ещё те костыли в производительности) Не согласен, если не читать из целиком все очень ничего, и с редактированием данных нет проблем Переходите на ADO и RecordSet и будет вам счастье. Пора по серьезному тискать Access. Данный запрос используется как сохраненный вложенный для массы остальных какое ADO и RecordSet И все же почему не используется индекс в первом виде запроса, а во втором используется В чем разница ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 12:57 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
ldfanate А если переделать в параметрический запрос, и передавать с форм параметрами? Данный запрос используется как сохраненный вложенный для массы остальных ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 12:59 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
BoxaXP ... базовый запрос (около 5000-6000 записей) начал тормозить (выполнение более 20 сек) ... начал переписывать запрос под условия отбора... и все заработало (выполнение около 2 сек) ... объяснить данное поведение access ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 13:12 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
BoxaXP В запросах никогда не использую ссылки на поля формы. Это засада. (Не явное приведение к типу) Это самый простой способ наложить условия, а функции использую чтобы уйти от неявного приведения типов BoxaXP И все же почему не используется индекс в первом виде запроса, а во втором используется В чем разница Уйти то вы ушли, но привидение происходит в теле запроса. Вы в теле запроса используете внешнюю функцию!!!!!!!!!! Отседова и тормоза.(план запроса должен быть разный) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 15:24 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
Товарисчь не понял намека про Clng-может так понятней будет ROI Вы в теле запроса используете внешнюю функцию!!!!!!!!! BoxaXP ...а функции использую чтобы уйти от неявного приведения типов... Явно преобразовать число в текст,а затем,уже неявно текст в число.... это значительно "ускоряет" работу запроса ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 15:57 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
Пусть он сам объясниЦЦа ... Что-то с его объяснений ничего не понятно 1 запрос (с ссылками на поля формы): --- 11 --- - Inputs to Query - ODBC table 'dbo_Архив' - End inputs to Query - 453416112) Remote SQL 453416112) Remote SQL 453416112) Remote SQL 2 запрос (явным указанием границ индекса): --- Выборка_Архив --- - Inputs to Query - ODBC table 'dbo_Архив' - End inputs to Query - 453416112) Remote SQL 453416112) Remote SQL 453416112) Remote SQL И найдите 2 отличия, а по времени выполнения разница на порядок ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 17:31 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
BoxaXP 2 запрос (явным указанием границ индекса): запускался сразу после первого ? попробуй рестартанут аксес и начать исследования именно со 2-го запроса :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 08:11 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
stu314, Запускал с разной очередностью, с перезапуском access, с изменение и сохранением запрса с сжатием базы в логе вообще ничего не меняется Могу скинуть базу и клиентскую часть, если кому интересно, там ничего секретного нет, сами поэкспериментируете ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:23 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
BoxaXP stu314, Запускал с разной очередностью, с перезапуском access, с изменение и сохранением запрса с сжатием базы в логе вообще ничего не меняется Могу скинуть базу и клиентскую часть, если кому интересно, там ничего секретного нет, сами поэкспериментируете Зачем нам экспериментировать? Вы спросили почему такая разница в скорости? Вам ответили почему. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 13:05 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
ROI Вы спросили почему такая разница в скорости? Вам ответили почему. Почему JET не приводит запрос1 к виду запрос2 перед выполнением и почему запрос1 не использует покрывающий индекс Вопрос как добиться скорости выполнения запроса2 не переписывая программно запрос (не меняя клиентскую часть) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 14:57 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
BoxaXP Вопрос как добиться скорости выполнения запроса2 не переписывая программно запрос (не меняя клиентскую часть) ldfanate А если переделать в параметрический запрос, и передавать с форм параметрами? Проверял ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:23 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
ldfanate А если переделать в параметрический запрос, и передавать с форм параметрами? Пробовал PARAMETERS [Forms]![Основная]![Индекс_С] Long, [Forms]![Основная]![Индекс_По] Long; SELECT dbo_Архив.ID_наработки, dbo_Архив.ID_счётчика, dbo_Архив.ID_артикула, dbo_Архив.Коэф_цены, dbo_Архив.Ячейка, Sum(dbo_Архив.Значение) AS [Sum-Значение] FROM dbo_Архив GROUP BY dbo_Архив.ID_наработки, dbo_Архив.ID_счётчика, dbo_Архив.ID_артикула, dbo_Архив.Коэф_цены, dbo_Архив.Ячейка HAVING (((dbo_Архив.ID_наработки) Between ([Forms]![Основная]![Индекс_С]) And ([Forms]![Основная]![Индекс_по]))); Скорость выполнения запроса1 т.е. 20 сек индекс не используется ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 16:00 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
авторBoxaXP, Between clng(... А нужен ли тут типкаст, если параметр запроса явно объявлен Long? Может както влияет? И потом PARAMETERS вы както странно объявили - зачем там явные ссылки прописали с восклицательными знаками? Может лучше просто статичные имена параметров, не совпадающие явно ни с чем на форме, и присваивать их тоже явно вручную (программно)? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 16:06 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
А нужен ли тут типкаст, если параметр запроса явно объявлен Long? Может както влияет? Согласен, но пробовал и так и этак, без разницы И потом PARAMETERS вы както странно объявили - зачем там явные ссылки прописали с восклицательными знаками? Может лучше просто статичные имена параметров, не совпадающие явно ни с чем на форме, и присваивать их тоже явно вручную (программно)? То есть опять переписывать запрос? тогда упираюсь в многопользовательский режим ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 16:14 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
почему "упираетесь"? Подсовываете значение параметров программно, через QueryDef.Parameters - просто чтобы имена параметров не пересекались с именами полей форм явно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 16:18 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
ldfanate, Запрос сохраненный, используется как базовый в массе других запросов ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 17:21 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
авториспользуется как базовый в массе других запросов всмысле как подзапрос? Так параметризовать и вышестоящий QueryDef тоже, только чтобы имена параметров были одинаковые. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2021, 13:32 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
ldfanate, А разве значения параметров сохраняются в запросе? Да и пробовал создавать запрос с параметрами, индексом он все равно не пользуется. Использование индекса идет только если в запросе жестко прописаны скалярные величины. Интересно можно ли access заставить использовать индекс, пробовал таблицу удалять, пере подключать - не помогло ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2021, 13:17 |
|
Работа Access Jet
|
|||
---|---|---|---|
#18+
BoxaXP ldfanate, Интересно можно ли access заставить использовать индекс, пробовал таблицу удалять, пере подключать - не помогло Тут раньше немного моя тема есть... Так там после назначения индекса скорость выполнения запроса очень сильно увеличилась..... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2021, 15:25 |
|
|
start [/forum/topic.php?fid=45&msg=40085056&tid=1609629]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
121ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 234ms |
0 / 0 |