Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как ускорить этот запрос??? / 14 сообщений из 14, страница 1 из 1
10.11.2003, 17:35
    #32319226
DJStealth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить этот запрос???
Для Access!!!
SELECT Ucase(Trim(Trim(Abcinf.namd_r)+' '+Trim(Prod_s.sform))) AS FullName,
Prod_s.codrecord
FROM Abcinf INNER JOIN Prod_s ON Abcinf.codmd_r = Prod_s.codmd_r
where Ucase(Trim(Trim(Abcinf.namd_r)+' '+Trim(Prod_s.sform))) = 'МЕДИКАМЕНТЫ'

Abcinf - ~8 тыс. записей
Prod_s - ~70 тыс. записей
Работает очень медленно, требуется примерно 3-5 сек
как мне его ускорить?
...
Рейтинг: 0 / 0
10.11.2003, 17:48
    #32319246
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить этот запрос???
1. Я бы проверил наличие индексов.

2. Внешний Trim - лишний. То, что передается ему как параметр, и так уже не имеет пробелов по концам.

3. Условие в WHERE явно можно упростить. Например:

Ucase(Trim(Abcinf.namd_r)) = 'МЕДИКАМЕНТЫ' OR Ucase(Trim(Prod_s.sform)) = 'МЕДИКАМЕНТЫ'

4. Можно этот Ucase(Trim( от двух полей держать в отдельном поле и вычислять по мере занесения записей, а не в момент запуска отчета.
...
Рейтинг: 0 / 0
10.11.2003, 17:52
    #32319253
MixaCh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить этот запрос???
А "Медикаменты" могут быть в любой из таблиц - я правильно понял?!?!?

Если можно привести по нескольку удачных записей для примера - было бы здорово....

И плюс - насколько я помню и в Access тоже сравнение не case_sensitive, т.е. все равно Ucase или нет......
...
Рейтинг: 0 / 0
10.11.2003, 17:55
    #32319260
MixaCh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить этот запрос???
2 В.С.

Второе предложение не совсем верно - там есть еще пробел в середине между двумя внутренними Trim'ами.... - может и вылезти, если один из них пустой....
...
Рейтинг: 0 / 0
10.11.2003, 17:55
    #32319263
DJStealth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить этот запрос???
нет, там все намного хуже: приходит прайс от поставщика.... пробегаемся по наименованию, и ищем такую же строку в хранимом запросе(который это уже отработал, т.е. кабы сетка висит по которой ищут ID через наименование)
если наименование есть, выдается id строки и тоже самое со следующей записью, если такой строки нет, она добавляется в таблицу (как новое, нераспознанное).
Т.е. происходит сверка AbcInf.Name_r+' '+Prod_s.sform =? Наименование.

Это не я придумал, но зато теперь мучают меня: "Медленно работает"
...
Рейтинг: 0 / 0
10.11.2003, 17:56
    #32319265
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить этот запрос???
> Второе предложение не совсем верно

Действительно. Виноват.
...
Рейтинг: 0 / 0
10.11.2003, 18:01
    #32319269
MixaCh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить этот запрос???
2 Автор:

Что-то несколько путанное разъяснение....

Может дадите запрос целиком?!? раз там еще и добавление??!? или это не запросом?!? и к чему там "? Наименование"?!? и еще красным выделенное...
...
Рейтинг: 0 / 0
10.11.2003, 18:07
    #32319275
DJStelth_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить этот запрос???
Что-то у меня форум глючит :-(
а он весь, все что после where это я уже здесь приписал для нагладнасти, а так оно(фильтр для отбора) определяется в клиенте
...
Рейтинг: 0 / 0
10.11.2003, 18:11
    #32319281
incold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить этот запрос???
Если операция поиска происходит значительно чаще, чем получение прайса, то я бы посоветовал обратить внимание на совет ВС
Можно этот Ucase(Trim( от двух полей держать в отдельном поле и вычислять по мере занесения записей, а не в момент запуска отчета.

Т.е. получили данные, добавли расчетное поле, проиндексировали его, и ищи себе быстренько.
...
Рейтинг: 0 / 0
10.11.2003, 18:13
    #32319282
AlexJuice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить этот запрос???
автор писал:Т.е. происходит сверка AbcInf.Name_r+' '+Prod_s.sform =? Наименование
Так зачем сравнивать выражение с пробелом с выражением без пробела, если можно воспользоваться Советом №3 от Владимир Саныча ?
...
Рейтинг: 0 / 0
10.11.2003, 18:16
    #32319286
MixaCh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить этот запрос???
Нет, понятно, конечно, что ты уже как рыба в своих структурах и медикаментах.....

Т.е. происходит сверка AbcInf.Name_r+' '+Prod_s.sform =? Наименование.


Наименование - это из прайса?!?!
AbcInf.Name_r - из каталога?!?!?

+' '+Prod_s.sform - что за зверь?!?!?!?

Я к тому, что может по логике его можно как-то упростить?!?!? или по сравнению.... - кто ж чего может подсказать просто по запросу....

Можно считать, что 3-5 секунд для обработки всего прайса не так уж и плохо - их же не тысячи приходят (наверное....)
...
Рейтинг: 0 / 0
10.11.2003, 18:24
    #32319288
DJStealth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить этот запрос???
ЦИСПЛАТИН_1МГ/МЛ ФЛ.10МЛ
_ - пробел
вот в таком виде приходят наименования, такйже вид получается после запроса
...
Рейтинг: 0 / 0
10.11.2003, 18:31
    #32319293
DJStealth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить этот запрос???
Наименование - это из прайса?!?! - наименование в пл
AbcInf.Name_r - из каталога?!?!? наименование медикаментов

+' '+Prod_s.sform - что за зверь?!?!?!? - форма выпуска

Я к тому, что может по логике его можно как-то упростить?!?!? или по сравнению.... - кто ж чего может подсказать просто по запросу....

MixaCh писал:Можно считать, что 3-5 секунд для обработки всего прайса не так уж и плохо - их же не тысячи приходят (наверное....)
в том то и дело что только для одной строки 3-5 сек идет поиск.
прайсов за день приходит от 30 до ЁЁЁЁЁ штук, и каждый по 1500 - 3000 строк
...
Рейтинг: 0 / 0
10.11.2003, 18:34
    #32319297
MixaCh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить этот запрос???
Ну тогда или как советовали - создать поле с полным наименованием медикамента

Или когда обрабатывается прайс - бить наименование в нем - до двух полей - и сравнивается уже напрямую....

Ну и индексы, конечно, как говорили уже выще гуру....

А прайс обрабатывается что - построчно?!? - может стоит его сгрузить во временную таблицу и работать с ней одним запросом - ну выростет время на 1 запись, зато в целом на документ думаю, что понизится хорошо.....
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как ускорить этот запрос??? / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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