Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Медленный запрос - Как увеличить скорость.... / 25 сообщений из 29, страница 1 из 2
21.10.2003, 18:19
    #32300380
*Александр
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Есть такой запрос:
(нужно получить данные представленные таким вот образом)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT 
Авторы.АвторыДокументовРНК AS Автор, 
sum(r1.SALE__) AS ПерваяНеделя, 
sum(r2.SALE__) AS ВтораяНеделя, 
sum(r3.SALE__) AS ТретьяНеделя, 
sum(r4.SALE__) AS ЧетвертаяНеделя, 
sum(r5.SALE__) AS ПятаяНеделя
FROM РНК AS r1, РНК AS r2, РНК AS r3, РНК AS r4, РНК AS r5, Авторы
WHERE r1.AUTOR_=Авторы.АвторыДокументовРНК And 
r2.AUTOR_=Авторы.АвторыДокументовРНК And 
r3.AUTOR_=Авторы.АвторыДокументовРНК And 
r4.AUTOR_=Авторы.АвторыДокументовРНК And 
r5.AUTOR_=Авторы.АвторыДокументовРНК And 
r1.DATDOC>=# 1 / 9 / 2003 # And r1.DATDOC<=# 7 / 9 / 2003 # And 
r2.DATDOC>=# 8 / 9 / 2003 # And r2.DATDOC<=# 9 / 14 / 2003 # And 
r3.DATDOC>=# 9 / 15 / 2003 # And r3.DATDOC<=# 9 / 21 / 2003 # And 
r4.DATDOC>=# 9 / 22 / 2003 # And r4.DATDOC<=# 9 / 28 / 2003 # And 
r5.DATDOC>=# 9 / 29 / 2003 # And r5.DATDOC<=# 9 / 30 / 2003 #
GROUP BY Авторы.АвторыДокументовРНК
ORDER BY Авторы.АвторыДокументовРНК;


Результат - этого запроса таков, что я уже 15 минут не погу получить ответ...
(очень плачевно...)
ПОМОГИТЕ ЛАМЕРСТВУЮЩЕМУ ЧЕЛОВЕКУ
...
Рейтинг: 0 / 0
21.10.2003, 18:24
    #32300385
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Сделайте Join, а не Where. Этот запрос выполняется на локальной машине или на сервере? Есть ли связанные таблички? Каков размер табличек?
...
Рейтинг: 0 / 0
21.10.2003, 18:43
    #32300414
*Александр
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Размер табличек:
РНК ~40 000 записей
Авторы ~60 записей
Запрос выполняется на локальной машинке, где и лежат данные...

Мне кажется что использование JOIN не поможет (так как та же самая малина)

Думаю Я совершил огромную глупость в том что не воспользовался оператором UNION.Так как по сути, этот запрос представляет просто совмещение нескольких результатов запросов, которые нужно представить в одном отчете...

кстати запрос до сих пор выполняется
...
Рейтинг: 0 / 0
21.10.2003, 18:44
    #32300416
Alex_2003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
А индексы есть на таблице?
...
Рейтинг: 0 / 0
21.10.2003, 18:45
    #32300419
*Александр
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Вечереет, надеюсь успею разобраться до утра :)
(все еще выполняется...)
...
Рейтинг: 0 / 0
21.10.2003, 18:45
    #32300420
Roalex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Ого, а если будет пятнадцать недель?

Наверное, есть смысл сделать функцию, которая возвращает номер недели, и перекрестный запрос по РНК: по строкам - авторы, по столбцам - недели и JOIN с таблицей авторы.

Или же кодом VBA во временную таблицу, все равно будет быстрее, чем 15 минут (если конечно авторов не сотни тысяч).
...
Рейтинг: 0 / 0
21.10.2003, 18:49
    #32300423
*Александр
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Поля Авторов во всех таблицах проиндексированы... :(
...
Рейтинг: 0 / 0
21.10.2003, 18:57
    #32300430
TRoUbLEs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
А может у тебя просто Акс завис??? Попробуй его убить по КонтреАльтДелу, а потом открой занову базу и попробуй выполнить свой запрос.
...
Рейтинг: 0 / 0
21.10.2003, 19:00
    #32300437
*Александр
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Попробовал перезагрузить... - Больному лучше не стало!!! :)
Самое интересное, что по каждой конкретной неделе отчет выполняется влет....
...
Рейтинг: 0 / 0
21.10.2003, 19:02
    #32300439
*Александр
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Блин - а нужно все вместе.... :(
...
Рейтинг: 0 / 0
21.10.2003, 19:03
    #32300441
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Чегой-то я сообразить не могу. А приведи-ка код запроса по неделе, который выполняется влёт.
...
Рейтинг: 0 / 0
21.10.2003, 19:08
    #32300448
*Александр
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT 
Авторы.АвторыДокументовРНК AS Автор, 
sum(РНК.SALE__) AS ПерваяНеделя 
FROM РНК, Авторы
WHERE 
РНК.AUTOR_=Авторы.АвторыДокументовРНК and
РНК.DATDOC>=# 1 / 9 / 2003 # And РНК.DATDOC<=# 7 / 9 / 2003 #
GROUP BY Авторы.АвторыДокументовРНК
ORDER BY Авторы.АвторыДокументовРНК;

- меньше секунды....
...
Рейтинг: 0 / 0
21.10.2003, 19:09
    #32300453
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Тю... Работать секретрем вредно - мозги разжижаются. (это я про себя)
Попробую завтра на свежую голову.
Или стая чего присоветует толкового?
...
Рейтинг: 0 / 0
21.10.2003, 19:10
    #32300454
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Вот делаешь такие запросы по всем неделям и пишешь Union ALL.
Будет гораздо быстрее.
...
Рейтинг: 0 / 0
21.10.2003, 19:12
    #32300456
*Александр
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
щас этим и занимаюсь... - ошибки лезут - заразы... Нелегко так вот просто, сходу написать запрос на 2 страницы... :)
...
Рейтинг: 0 / 0
21.10.2003, 19:12
    #32300457
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
По-моему, идея про UNION была здоровая.

Да и вообще, я бы заменил все эти одинаковые таблицы на одну.
...
Рейтинг: 0 / 0
21.10.2003, 19:13
    #32300458
*Александр
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
На какую ?
...
Рейтинг: 0 / 0
21.10.2003, 19:14
    #32300460
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Большую
...
Рейтинг: 0 / 0
21.10.2003, 19:14
    #32300461
TRoUbLEs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Млин, ну дык ессно. Ты же сам себе ответил. Сделай все по ЮНИОНу и все должно быть нормально. А то ты пытаешься тут выбрать туеву хучу полей и чтобы еще как-то они у тебя по неделям были. Ну знаешь!!! UNION тебе в руки. :))
...
Рейтинг: 0 / 0
21.10.2003, 19:15
    #32300463
TRoUbLEs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Апаздал (с) ЛП.
...
Рейтинг: 0 / 0
21.10.2003, 19:16
    #32300467
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Именно - большую.
...
Рейтинг: 0 / 0
21.10.2003, 19:20
    #32300474
Roalex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Union ALL добавит записи, а не поля в запрос, как требуется в задаче, если я ее правильно понял.
Можно, конечно, потом этот весь унион развернуть перекрестным запросом.

Но, ИМХО, заморочливо аксу решать задачи, где в запросе используются несвязанные таблицы, тем более 6 штук (этож сколько записей получается).
А по двум неделям, что-нибудь возвращает?
...
Рейтинг: 0 / 0
21.10.2003, 19:26
    #32300483
*Александр
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
по двум возвращает , но медленнее...
...
Рейтинг: 0 / 0
21.10.2003, 19:29
    #32300486
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Список советов по возрастанию кардинальности:

1. Вместо WHERE поставить JOIN.
2. Перейти на UNION.
3. Проиндексировать поле DATDOC.
4. Превратить ряд таблиц одинаковой структуры в одну.
...
Рейтинг: 0 / 0
21.10.2003, 19:33
    #32300488
*Александр
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленный запрос - Как увеличить скорость....
Во какая байда - работает 2 секунды...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
SELECT Автор, sum(ПерваяНеделя), sum(ВтораяНеделя), sum(ТретьяНеделя), sum(ЧетвертаяНеделя), sum(ПятаяНеделя)
FROM [SELECT Авторы.АвторыДокументовРНК AS Автор, sum(РНК.SALE__) AS ПерваяНеделя,  0  AS ВтораяНеделя,  0  AS ТретьяНеделя,   0  AS ЧетвертаяНеделя, 0  AS ПятаяНеделя
FROM РНК, Авторы
WHERE 
РНК.AUTOR_=Авторы.АвторыДокументовРНК and
РНК.DATDOC>=# 1 / 9 / 2003 # And РНК.DATDOC<=# 7 / 9 / 2003 # 
GROUP BY Авторы.АвторыДокументовРНК
 
Union all
SELECT Авторы.АвторыДокументовРНК, 0 , sum(РНК.SALE__),  0  ,  0  ,  0  
FROM РНК, Авторы
WHERE 
РНК.AUTOR_=Авторы.АвторыДокументовРНК and
РНК.DATDOC>=# 8 / 9 / 2003 # And РНК.DATDOC<=# 14 / 9 / 2003 # 
GROUP BY Авторы.АвторыДокументовРНК

Union all
SELECT Авторы.АвторыДокументовРНК, 0 , 0 ,sum(РНК.SALE__),  0  ,  0   
FROM РНК, Авторы
WHERE 
РНК.AUTOR_=Авторы.АвторыДокументовРНК and
РНК.DATDOC>=# 15 / 9 / 2003 # And РНК.DATDOC<=# 21 / 9 / 2003 # 
GROUP BY Авторы.АвторыДокументовРНК

Union all
SELECT Авторы.АвторыДокументовРНК, 0 , 0 , 0 ,sum(РНК.SALE__),  0    
FROM РНК, Авторы
WHERE 
РНК.AUTOR_=Авторы.АвторыДокументовРНК and
РНК.DATDOC>=# 22 / 9 / 2003 # And РНК.DATDOC<=# 28 / 9 / 2003 # 
GROUP BY Авторы.АвторыДокументовРНК
 
UNION ALL SELECT Авторы.АвторыДокументовРНК, 0 , 0 , 0 , 0 ,sum(РНК.SALE__)   
FROM РНК, Авторы
WHERE 
РНК.AUTOR_=Авторы.АвторыДокументовРНК and
РНК.DATDOC>=# 29 / 9 / 2003 # And РНК.DATDOC<=# 30 / 9 / 2003 # 
GROUP BY Авторы.АвторыДокументовРНК
ORDER BY Автор
]. AS [%$##@_Alias]
GROUP BY Автор
ORDER BY Автор;
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Медленный запрос - Как увеличить скорость.... / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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