|
|
|
Как ускорить этот запрос???
|
|||
|---|---|---|---|
|
#18+
Для 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 сек как мне его ускорить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2003, 17:35 |
|
||
|
Как ускорить этот запрос???
|
|||
|---|---|---|---|
|
#18+
1. Я бы проверил наличие индексов. 2. Внешний Trim - лишний. То, что передается ему как параметр, и так уже не имеет пробелов по концам. 3. Условие в WHERE явно можно упростить. Например: Ucase(Trim(Abcinf.namd_r)) = 'МЕДИКАМЕНТЫ' OR Ucase(Trim(Prod_s.sform)) = 'МЕДИКАМЕНТЫ' 4. Можно этот Ucase(Trim( от двух полей держать в отдельном поле и вычислять по мере занесения записей, а не в момент запуска отчета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2003, 17:48 |
|
||
|
Как ускорить этот запрос???
|
|||
|---|---|---|---|
|
#18+
А "Медикаменты" могут быть в любой из таблиц - я правильно понял?!?!? Если можно привести по нескольку удачных записей для примера - было бы здорово.... И плюс - насколько я помню и в Access тоже сравнение не case_sensitive, т.е. все равно Ucase или нет...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2003, 17:52 |
|
||
|
Как ускорить этот запрос???
|
|||
|---|---|---|---|
|
#18+
2 В.С. Второе предложение не совсем верно - там есть еще пробел в середине между двумя внутренними Trim'ами.... - может и вылезти, если один из них пустой.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2003, 17:55 |
|
||
|
Как ускорить этот запрос???
|
|||
|---|---|---|---|
|
#18+
нет, там все намного хуже: приходит прайс от поставщика.... пробегаемся по наименованию, и ищем такую же строку в хранимом запросе(который это уже отработал, т.е. кабы сетка висит по которой ищут ID через наименование) если наименование есть, выдается id строки и тоже самое со следующей записью, если такой строки нет, она добавляется в таблицу (как новое, нераспознанное). Т.е. происходит сверка AbcInf.Name_r+' '+Prod_s.sform =? Наименование. Это не я придумал, но зато теперь мучают меня: "Медленно работает" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2003, 17:55 |
|
||
|
Как ускорить этот запрос???
|
|||
|---|---|---|---|
|
#18+
> Второе предложение не совсем верно Действительно. Виноват. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2003, 17:56 |
|
||
|
Как ускорить этот запрос???
|
|||
|---|---|---|---|
|
#18+
2 Автор: Что-то несколько путанное разъяснение.... Может дадите запрос целиком?!? раз там еще и добавление??!? или это не запросом?!? и к чему там "? Наименование"?!? и еще красным выделенное... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2003, 18:01 |
|
||
|
Как ускорить этот запрос???
|
|||
|---|---|---|---|
|
#18+
Что-то у меня форум глючит :-( а он весь, все что после where это я уже здесь приписал для нагладнасти, а так оно(фильтр для отбора) определяется в клиенте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2003, 18:07 |
|
||
|
Как ускорить этот запрос???
|
|||
|---|---|---|---|
|
#18+
Если операция поиска происходит значительно чаще, чем получение прайса, то я бы посоветовал обратить внимание на совет ВС Можно этот Ucase(Trim( от двух полей держать в отдельном поле и вычислять по мере занесения записей, а не в момент запуска отчета. Т.е. получили данные, добавли расчетное поле, проиндексировали его, и ищи себе быстренько. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2003, 18:11 |
|
||
|
Как ускорить этот запрос???
|
|||
|---|---|---|---|
|
#18+
автор писал:Т.е. происходит сверка AbcInf.Name_r+' '+Prod_s.sform =? Наименование Так зачем сравнивать выражение с пробелом с выражением без пробела, если можно воспользоваться Советом №3 от Владимир Саныча ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2003, 18:13 |
|
||
|
Как ускорить этот запрос???
|
|||
|---|---|---|---|
|
#18+
Нет, понятно, конечно, что ты уже как рыба в своих структурах и медикаментах..... Т.е. происходит сверка AbcInf.Name_r+' '+Prod_s.sform =? Наименование. Наименование - это из прайса?!?! AbcInf.Name_r - из каталога?!?!? +' '+Prod_s.sform - что за зверь?!?!?!? Я к тому, что может по логике его можно как-то упростить?!?!? или по сравнению.... - кто ж чего может подсказать просто по запросу.... Можно считать, что 3-5 секунд для обработки всего прайса не так уж и плохо - их же не тысячи приходят (наверное....) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2003, 18:16 |
|
||
|
Как ускорить этот запрос???
|
|||
|---|---|---|---|
|
#18+
ЦИСПЛАТИН_1МГ/МЛ ФЛ.10МЛ _ - пробел вот в таком виде приходят наименования, такйже вид получается после запроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2003, 18:24 |
|
||
|
Как ускорить этот запрос???
|
|||
|---|---|---|---|
|
#18+
Наименование - это из прайса?!?! - наименование в пл AbcInf.Name_r - из каталога?!?!? наименование медикаментов +' '+Prod_s.sform - что за зверь?!?!?!? - форма выпуска Я к тому, что может по логике его можно как-то упростить?!?!? или по сравнению.... - кто ж чего может подсказать просто по запросу.... MixaCh писал:Можно считать, что 3-5 секунд для обработки всего прайса не так уж и плохо - их же не тысячи приходят (наверное....) в том то и дело что только для одной строки 3-5 сек идет поиск. прайсов за день приходит от 30 до ЁЁЁЁЁ штук, и каждый по 1500 - 3000 строк ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2003, 18:31 |
|
||
|
Как ускорить этот запрос???
|
|||
|---|---|---|---|
|
#18+
Ну тогда или как советовали - создать поле с полным наименованием медикамента Или когда обрабатывается прайс - бить наименование в нем - до двух полей - и сравнивается уже напрямую.... Ну и индексы, конечно, как говорили уже выще гуру.... А прайс обрабатывается что - построчно?!? - может стоит его сгрузить во временную таблицу и работать с ней одним запросом - ну выростет время на 1 запись, зато в целом на документ думаю, что понизится хорошо..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2003, 18:34 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32319246&tid=1678351]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
169ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 518ms |

| 0 / 0 |
