|
|
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Не пробовал. А надо ли? Вот такая строка сама по себе отрабатывается моментально: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 17:33 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
А весь запрос без этой строки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 17:36 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Без нее работает быстро! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 17:36 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
WHERE Cash.[Реф №] = (select distinct [реф №] from calc where Calc.Статус='получено' AND Calc.[Реф №]= t.[Реф №])? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 17:44 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Sum(Nz(Cash.Эквивалент1,0)) FROM cash, Calc WHERE (Calc.[Реф №] = t.[Реф №] AND Calc.Статус='получено') AND (Cash.[Реф №] = Calc.[Реф №]) ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 17:57 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Считает быстро, но вместо 1985,9 в поле число 5957,8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 18:01 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Тут идет такое же дублирование как и то, о котором я говорил вначале топика. Результат превышает реальный ответ ровно в 4 раза ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 18:09 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Точнее в 3 раза :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 18:10 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Повторю вопрос для вновь прибывших: Есть нормально работающий запрос Код: plaintext 1. 2. 3. Но, если этот запрос вставить в другой запрос, то скорость замедляется в ДЕСЯТКИ раз Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Как оптимизировать такой запрос??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 18:24 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Опечатка во втором запросе: вместо "TOP 1" д.б. distinct ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 18:26 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
>>то скорость замедляется в ДЕСЯТКИ раз ничего удивительного. Для _каждой_ записи конечного запроса вычисляется по нескольку группировочных запросов. Если задача сформулирована правильно, то есть например такой способ: 1. предположим, что полное число [реф №] невелико. Тогда вместо вычисления запросов вида {SELECT Nz(sum(calc.Эквивалент2)...} для _каждой_ записи общего запроса надо выполнить некий запрос с ГРУППИРОВКОЙ по [реф №], а уж его цеплять внешним джойном к результирующему запросу. Можно даже складирвать результаты группировки в темповую таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2003, 10:42 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Если обрабатывать большое количество записей, то работает очень долго. Есть ли способы ускорения этого запроса (например, выполнение по частям или что-нибудь еще)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2003, 01:07 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
А почему бы не сделать группировочные запросы для каждой таблицы, по которой надо посчитать сумму? А потом использовать RIGHT JOIN. По крайней мере для таблиц cash и bank окажется по одному запросу вместо двух в приведенном примере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2003, 10:23 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Работает очень быстро, но появляется проблема из-за которой я и завел этот топик: значения больше реальных в 12 раз (это не постоянное число раз). Причем, чем меньше "Join'ов" тем в меньшее число раз полученное значение превышает реальное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2003, 15:16 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Я немного не об этом ;) Можно же сделать для каждой из нужных таблиц _отдельный_ запрос с группировкой по нужному полю, например: Код: plaintext 1. и соединить его через RIGHT JOIN с основной таблицей! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2003, 15:28 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
В таком случае нужно заводить массу хранимых запросов, а мне желательно сделать это все в программе (этот запрос служит для открытия рекордсета). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2003, 15:57 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Для данного запроса получится всего три запроса (по одному к каждой вспомогательной таблице). И, между прочим, сохраненные запросы должны поднять быстродействие. ИМХО здесь не получится "и рыбку съесть, и..." Впрочем, наше дело предложить... Других выходов все равно не предвидится, так что решай сам. Мне больше предложить нечего. Кстати, я бы отказался от такого наименования поля как "№ реф". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2003, 16:13 |
|
||
|
|

start [/forum/topic.php?fid=45&gotonew=1&tid=1677941]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
134ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 479ms |

| 0 / 0 |
