powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Sybase зависание запроса к огромному количеству данных
25 сообщений из 46, страница 1 из 2
Sybase зависание запроса к огромному количеству данных
    #34243092
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работа с сервером Adaptive Server Enterprise/12.5.1
использую db-lib
пишу на Builder C++

Проблема.

Запрос возвращает ОЧЕНЬ МНОГО ЗАПИСЕЙ.

Для каждой "Ячейки" (=имя поля одной таблицы) надо просуммировать значения несольких других полей.

Делаю группировку и sum.

Все виснет даже в SQL Explorere!!!!
Может была уже какая тема с похожей проблемой? может, кто подскажет?

Данных ОЧЕНЬ МНОГО, даже, если выводить тока значения поля "Ячейка" и сделать группировку по этому полю - то все виснет.

Просто вывод всех значений работает.
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243129
Серж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onnlyЗапрос возвращает ОЧЕНЬ МНОГО ЗАПИСЕЙ.
а зачем возвращать ОЧЕНЬ МНОГО записей
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243136
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне они нужны для занесения их потом в Excel с целью создания отчетов. Так задано.
Может иожно выводить записи партиями по нескольку строк? я не могу найти функцию для этого..
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243163
Серж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а бумаги хватит на такой отчет? ;)

Можно сделать курсор, построчно считать и кидать в эксель.
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243221
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onnlyмне они нужны для занесения их потом в Excel с целью создания отчетов.

65К строк - лимит в екселе...
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243299
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рыжий Кот onnlyмне они нужны для занесения их потом в Excel с целью создания отчетов.

65К строк - лимит в екселе...

Если данные сразу в сводную таблицу гнать, то этого лимита хватит.
Если конечно сводную таблицу "правильно" сделать.
У автора похоже проблема именно в начальной выборке, до Excel дело не доходит.
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243324
v_smirnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рыжий Кот65К строк - лимит в екселе...

Скорее всего идет речь о построении куба (olap) в Excel на основе данных взятых из базы.

2 onnly
Вариантов несколько:
1. Оптимизировать запрос
2. Делать расчет кусками
3. Делать предрасчет по евенту
4. Делать предварительную выборку во временную таблицу и только потом суммировать
5. Уменьшить объем данных
6. Искать другие средства для формирования этого отчета.

Запросы виснуть не могут - просто иногда время выдачи результата очень большое ...
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243331
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если записей действительно очень много, да еще и выборка не оптимизированная, но надо!!!, то наверно пора подумать об OLAP.
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243422
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С экселем проблем, наверное, не будет.Т.к. до него я еще не дошел.

Формировал другие запросы - они выполнялись довольно быстро.
Отсылал dbsqlsend запрос, ждал ответа и затем выполнялось успешно dbsqlok.
Потом уже шел загон в Excel - отсюда неочень хотелось бы пробовать с курсором. Но, вдруг поможет построчно, попробую..

Теперь с этим запросом - ответа не дождаться - времени уходит очень много на ожидание ответа (=результатов) - аж все подвисает.Но потом выдает 0 строк. (то есть не дождался - таймаут неохота бы менять....потому как все равно будет слишком тогда медленно!)

Мой запрос должен давать всего порядка 6 тыс записей.
Его идея: (имена значения не имеют)
SELECT
алисас1.поле,
алисас1.поле2,
алисас1.поле3,
алисас1.поле4,
sum(алисас1.поле5),
sum(алисас1.поле6),
sum(алисас1.поле7),
sum(алисас1.поле8),
sum(алисас1.поле9),
sum(алисас1.поле10),
sum(алисас1.поле11),
sum(алисас1.поле12),
avg(алисас1.поле13)

FROM
//неважно

WHERE
//неважно

GROUP BY
алисас1.поле,
алисас1.поле2,
алисас1.поле3,
алисас1.поле4

"Виснет" он в SQLExplorer.

"Виснет" даже такое:

SELECT
алисас1.поле

FROM
//неважно

WHERE
//неважно

GROUP BY
алисас1.поле

_______________________
Не "виснет" такое:

SELECT
алисас1.поле,
алисас1.поле2,
алисас1.поле3,
алисас1.поле4,
sum(алисас1.поле5),
sum(алисас1.поле6),
sum(алисас1.поле7),
sum(алисас1.поле8),
sum(алисас1.поле9),
sum(алисас1.поле10),
sum(алисас1.поле11),
sum(алисас1.поле12),
avg(алисас1.поле13)

FROM
//неважно

WHERE
//неважно
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243433
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ой тока алиасы кое-где разные (их две базы)
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243555
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если убрать операции группировки в запросе и все попробовать суммировать в Excel в сводной таблице?
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243624
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если делать суммирование и группирование уже в Excel, то я уже уснул, пока у меня эти данные собираются...ИХ слишком много....неуверен влезут ли вообще в Excel - count не работает в SQLExplorer - не посмотреть число строк...
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243639
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4 658 725 у меня уже накапало столько записей......
без группир и сумм
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243667
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помню, что у АСЕ был забавный глюк, который возведен в ранг фичи (где-то в форуме даже было обсуждение):
Не контроллируется сооветвие полей агрегации и полей в group by.
При таком запросе азешка начинает выполнять этот запрос но при этом жутко тормозит, и как правило такие запросы на относительно больших таблицах заканчиваются забиванием тембдб и отвалом запроса.
Вывод: обязательно проверьте правильность перечисленных полей в group by, не полагайтесь в этом деле на синтаксический парсер азе..
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243706
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поля в group by указаны точно верно
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243752
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
объясните для тупых (мало знающих) поможет ли создать временную таблицу и запихать без отбора ОГРОМНЫЕ ДАННЫЕ, а потом сделать выборку?

И как временная создается sql-командами?
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243815
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4 658 725 это конечно много.
Тут уже выше приводили ряд решений
Продумайте бизнес-логику и действия пользователя при работе с таким отчетом, может действительно можно ограничить выборку для каждого экземпляра и элемента отчета, по которому группировка идет.

P.S. Трудно конечно что-то конкретное советовать, не зная вашей предметной области, структуры базы и т.д. Я давно, на заре работы со сводными таблицами выбирал все и вся, пока не уперся в объем.
Потом начал делать отчеты более грамотно, исходя из конкретной задачи отчета. Фильтры добавил, чтобы лишние данные не выбирать и т.д. Много конечно еще от отчетной системы зависит.

Ну а теперь уже уже на OLAP-сервер перешел. Все основные агрегаты посчитаны и рассчитаны, фильтры конечно тоже есть и еще много чего, вообщем средство как раз для таких задач.
Конечно всюду OLAP-сервер ставить наверно не следует, от задач зависит.
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34243852
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно попробовать через временную таблицу...
что-то вроде:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
insert into #tmp (f1,f2,f3,f4)
select distinct f1,f2,f3,f4 from t1,....
--
update #tmp set f5=sum(t1.f5), ....
from t1,....
where #tmp.f1=t1.f1 and ...
--
select * from #tmp

НО меня смутила фраза:
onnlyой тока алиасы кое-где разные (их две базы)

Таблицы в разных базах? А что там с индексами?
И не хотите ли взглянуть на план запроса?
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34244022
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onnlyобъясните для тупых (мало знающих) поможет ли создать временную таблицу и запихать без отбора ОГРОМНЫЕ ДАННЫЕ

Поможет ЧЕМУ ? Скорости работы ? Нет , конечно.

Приведите DDL таблицы, запрос, план его выполнения, тогда можно будет о чем-то говорить.

Иначе разговор безпредметный.

автор
WHERE
//неважно


WHERE очень даже важно. Или вы обязательно всю 4M-таблицу хотите сгруппировать обязательно ? Тогда вам только распарралеливание запросов и настройка буферов сотрировки поможет.
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34245063
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ой DDL таблиц никогда не делал ой:(
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34245106
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если взять весь запрос, то вот он:

SELECT
алиас1..sdmCell.cellName,
алиас1..sdmBsc.bscName,
алиас1..PEAK_SWITCH.TYPE,
Time2.TIME,
sum(алиас1..CELL_GPRS.PCHALLATT)as [PCHALLATT],
sum(алиас1..CELL_GPRS.PCHALLFAIL)as [PCHALLFAIL],
sum(алиас1..CELL_GPRS.RETRANSUL)as [RETRANSUL],
sum(алиас1..CELL_GPRS.RETRANSDL)as [RETRANSDL],
sum(алиас1..CELL_GPRS.RBCDL)as [No. Of Radio Blocks, DL],
sum(алиас1..CELL_GPRS.RBCUL)as [No. Of Radio Blocks, UL],
sum(алиас1..CELL_GPRS.PREEMPTPDCH)as [No. Of Preemted PDCHs],
sum(алиас1..CELL_GPRS.C_ALLPDCHACC)as [C_ALLPDCHACC],
avg(алиас1..CELL_MAIN.TNUCHCNT)

FROM
алиас1..sdmCell,
алиас1..sdmBsc,
алиас2..RESOLUTION RPL_NAME_CROSS,
алиас1..SYSTEM_ADM Time2,
алиас1..PEAK_SWITCH,
алиас1..CELL_GPRS,
алиас1..CELL_MAIN,
алиас1..CELL_ADM,
алиас2..RESOLUTION

WHERE
( алиас2..RESOLUTION.resId=RPL_NAME_CROSS.resId )
AND ( алиас1..CELL_ADM.NE= алиас1..sdmCell.neName )
AND ( Time2.TIME=алиас1..CELL_ADM.TIME )
AND ( алиас1..CELL_ADM.RES=алиас2..RESOLUTION.resId )
AND ( алиас1..CELL_ADM.ID=алиас1..CELL_GPRS.ID AND RPL_NAME_CROSS.resName = 'Day' AND алиас1..sdmCell.cellName = алиас1..CELL_GPRS.MO )
AND ( алиас2..RESOLUTION.resId +10 >= алиас1..PEAK_SWITCH.ID )

AND ( алиас1..sdmBsc.bscName=алиас1..CELL_ADM.NE )
AND ( Time2.RES=алиас1..CELL_ADM.RES )
AND ( алиас1..sdmBsc.status=0 )
AND ( алиас1..PEAK_SWITCH.TYPE = 'Normal' )
AND (
(Time2.TIME BETWEEN convert(datetime,'2006-12-24 00:00:00',102) AND convert(datetime,'2006-12-24 00:00:00',102))
)

GROUP BY
алиас1..sdmCell.cellName,
алиас1..sdmBsc.bscName,
алиас1..PEAK_SWITCH.TYPE,
Time2.TIME
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34245425
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
про DDL уже просвятился.простите за глупый вопрос
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34246095
mooon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
смущает следующее:

AND ( алиас2..RESOLUTION.resId +10 >= алиас1..PEAK_SWITCH.ID )

при таком условии скорее всего не используется индекс (если он конечно есть)



Time2.TIME BETWEEN convert(datetime,'2006-12-24 00:00:00',102) AND convert(datetime,'2006-12-24 00:00:00',102)
очень может быть что ф-я convert вычисляется для каждой строки из таблицы Time2.
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34246116
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А самое главное - у вас в условии WHERE не встречается таблица
CELL_MAIN

вы просто вешаете сервер!!!
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34247703
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CELL_MAIN участвует в Select
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Sybase зависание запроса к огромному количеству данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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