Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
19.07.2021, 15:31
|
|||
---|---|---|---|
|
|||
Работа 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, 16:24
|
|||
---|---|---|---|
Работа Access Jet |
|||
#18+
BoxaXP Код: vbnet 1. 2.
-чем вызвано применение Clng?(надеюсь поля [ID_наработки], [Индекс_С],[Индекс_по] числовые) когда ответите на эти вопросы поймете почему ACCESS себя так ведет ... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.07.2021, 17:38
|
|||
---|---|---|---|
|
|||
Работа Access Jet |
|||
#18+
Поля числовые, но access без использования clng() передает их как строковые и скорость выполнения падает катастрофически до 1,5 - 2 минуты Разницу между Having и Where знаю, пробовал и так и этак при тестировании разницы никакой Вопрос почему Jet при использовании функций не использует индекс, а при явном указании числовых значений в запросе, использует ... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.07.2021, 17:43
|
|||
---|---|---|---|
Работа Access Jet |
|||
#18+
BoxaXP Поля числовые, но access без использования clng() передает их как строковые ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.07.2021, 04:51
|
|||
---|---|---|---|
Работа Access Jet |
|||
#18+
BoxaXP т.к. клиентам приходиться ставить отдельную клиентскую часть в связи с переписыванием запроса, что не удобно Ну дык храните запрос в таблице. В запросах никогда не использую ссылки на поля формы. Это засада. (Не явное приведение к типу) Присоединенные таблицы(это есчё те костыли в производительности) Переходите на ADO и RecordSet и будет вам счастье. Пора по серьезному тискать Access. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.07.2021, 08:24
|
|||
---|---|---|---|
Работа Access Jet |
|||
#18+
А если переделать в параметрический запрос, и передавать с форм параметрами? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.07.2021, 12:57
|
|||
---|---|---|---|
|
|||
Работа Access Jet |
|||
#18+
Ну дык храните запрос в таблице. Придется мудрить что-то с разделением по пользователям и привязывать каждому свой запрос в таблице В запросах никогда не использую ссылки на поля формы. Это засада. (Не явное приведение к типу) Это самый простой способ наложить условия, а функции использую чтобы уйти от неявного приведения типов Присоединенные таблицы(это ещё те костыли в производительности) Не согласен, если не читать из целиком все очень ничего, и с редактированием данных нет проблем Переходите на ADO и RecordSet и будет вам счастье. Пора по серьезному тискать Access. Данный запрос используется как сохраненный вложенный для массы остальных какое ADO и RecordSet И все же почему не используется индекс в первом виде запроса, а во втором используется В чем разница ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.07.2021, 12:59
|
|||
---|---|---|---|
|
|||
Работа Access Jet |
|||
#18+
ldfanate А если переделать в параметрический запрос, и передавать с форм параметрами? Данный запрос используется как сохраненный вложенный для массы остальных ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.07.2021, 13:12
|
|||
---|---|---|---|
|
|||
Работа Access Jet |
|||
#18+
BoxaXP ... базовый запрос (около 5000-6000 записей) начал тормозить (выполнение более 20 сек) ... начал переписывать запрос под условия отбора... и все заработало (выполнение около 2 сек) ... объяснить данное поведение access ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.07.2021, 15:24
|
|||
---|---|---|---|
Работа Access Jet |
|||
#18+
BoxaXP В запросах никогда не использую ссылки на поля формы. Это засада. (Не явное приведение к типу) Это самый простой способ наложить условия, а функции использую чтобы уйти от неявного приведения типов BoxaXP И все же почему не используется индекс в первом виде запроса, а во втором используется В чем разница Уйти то вы ушли, но привидение происходит в теле запроса. Вы в теле запроса используете внешнюю функцию!!!!!!!!!! Отседова и тормоза.(план запроса должен быть разный) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.07.2021, 15:57
|
|||
---|---|---|---|
Работа Access Jet |
|||
#18+
Товарисчь не понял намека про Clng-может так понятней будет ROI Вы в теле запроса используете внешнюю функцию!!!!!!!!! BoxaXP ...а функции использую чтобы уйти от неявного приведения типов... Явно преобразовать число в текст,а затем,уже неявно текст в число.... это значительно "ускоряет" работу запроса ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.07.2021, 17:31
|
|||
---|---|---|---|
|
|||
Работа 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 отличия, а по времени выполнения разница на порядок ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.07.2021, 08:11
|
|||
---|---|---|---|
Работа Access Jet |
|||
#18+
BoxaXP 2 запрос (явным указанием границ индекса): запускался сразу после первого ? попробуй рестартанут аксес и начать исследования именно со 2-го запроса :) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.07.2021, 12:23
|
|||
---|---|---|---|
|
|||
Работа Access Jet |
|||
#18+
stu314, Запускал с разной очередностью, с перезапуском access, с изменение и сохранением запрса с сжатием базы в логе вообще ничего не меняется Могу скинуть базу и клиентскую часть, если кому интересно, там ничего секретного нет, сами поэкспериментируете ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.07.2021, 13:05
|
|||
---|---|---|---|
Работа Access Jet |
|||
#18+
BoxaXP stu314, Запускал с разной очередностью, с перезапуском access, с изменение и сохранением запрса с сжатием базы в логе вообще ничего не меняется Могу скинуть базу и клиентскую часть, если кому интересно, там ничего секретного нет, сами поэкспериментируете Зачем нам экспериментировать? Вы спросили почему такая разница в скорости? Вам ответили почему. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.07.2021, 14:57
|
|||
---|---|---|---|
|
|||
Работа Access Jet |
|||
#18+
ROI Вы спросили почему такая разница в скорости? Вам ответили почему. Почему JET не приводит запрос1 к виду запрос2 перед выполнением и почему запрос1 не использует покрывающий индекс Вопрос как добиться скорости выполнения запроса2 не переписывая программно запрос (не меняя клиентскую часть) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.07.2021, 15:23
|
|||
---|---|---|---|
Работа Access Jet |
|||
#18+
BoxaXP Вопрос как добиться скорости выполнения запроса2 не переписывая программно запрос (не меняя клиентскую часть) ldfanate А если переделать в параметрический запрос, и передавать с форм параметрами? Проверял ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.07.2021, 16:00
|
|||
---|---|---|---|
|
|||
Работа 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:06
|
|||
---|---|---|---|
Работа Access Jet |
|||
#18+
авторBoxaXP, Between clng(... А нужен ли тут типкаст, если параметр запроса явно объявлен Long? Может както влияет? И потом PARAMETERS вы както странно объявили - зачем там явные ссылки прописали с восклицательными знаками? Может лучше просто статичные имена параметров, не совпадающие явно ни с чем на форме, и присваивать их тоже явно вручную (программно)? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.07.2021, 16:14
|
|||
---|---|---|---|
|
|||
Работа Access Jet |
|||
#18+
А нужен ли тут типкаст, если параметр запроса явно объявлен Long? Может както влияет? Согласен, но пробовал и так и этак, без разницы И потом PARAMETERS вы както странно объявили - зачем там явные ссылки прописали с восклицательными знаками? Может лучше просто статичные имена параметров, не совпадающие явно ни с чем на форме, и присваивать их тоже явно вручную (программно)? То есть опять переписывать запрос? тогда упираюсь в многопользовательский режим ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.07.2021, 16:18
|
|||
---|---|---|---|
Работа Access Jet |
|||
#18+
почему "упираетесь"? Подсовываете значение параметров программно, через QueryDef.Parameters - просто чтобы имена параметров не пересекались с именами полей форм явно. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.07.2021, 17:21
|
|||
---|---|---|---|
|
|||
Работа Access Jet |
|||
#18+
ldfanate, Запрос сохраненный, используется как базовый в массе других запросов ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.07.2021, 13:32
|
|||
---|---|---|---|
Работа Access Jet |
|||
#18+
авториспользуется как базовый в массе других запросов всмысле как подзапрос? Так параметризовать и вышестоящий QueryDef тоже, только чтобы имена параметров были одинаковые. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.07.2021, 13:17
|
|||
---|---|---|---|
|
|||
Работа Access Jet |
|||
#18+
ldfanate, А разве значения параметров сохраняются в запросе? Да и пробовал создавать запрос с параметрами, индексом он все равно не пользуется. Использование индекса идет только если в запросе жестко прописаны скалярные величины. Интересно можно ли access заставить использовать индекс, пробовал таблицу удалять, пере подключать - не помогло ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.07.2021, 15:25
|
|||
---|---|---|---|
|
|||
Работа Access Jet |
|||
#18+
BoxaXP ldfanate, Интересно можно ли access заставить использовать индекс, пробовал таблицу удалять, пере подключать - не помогло Тут раньше немного моя тема есть... Так там после назначения индекса скорость выполнения запроса очень сильно увеличилась..... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=45&mobile=1&tid=1609629]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
133ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 258ms |
0 / 0 |