Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
Работа с сервером Adaptive Server Enterprise/12.5.1 использую db-lib пишу на Builder C++ Проблема. Запрос возвращает ОЧЕНЬ МНОГО ЗАПИСЕЙ. Для каждой "Ячейки" (=имя поля одной таблицы) надо просуммировать значения несольких других полей. Делаю группировку и sum. Все виснет даже в SQL Explorere!!!! Может была уже какая тема с похожей проблемой? может, кто подскажет? Данных ОЧЕНЬ МНОГО, даже, если выводить тока значения поля "Ячейка" и сделать группировку по этому полю - то все виснет. Просто вывод всех значений работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 15:04 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
onnlyЗапрос возвращает ОЧЕНЬ МНОГО ЗАПИСЕЙ. а зачем возвращать ОЧЕНЬ МНОГО записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 15:18 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
мне они нужны для занесения их потом в Excel с целью создания отчетов. Так задано. Может иожно выводить записи партиями по нескольку строк? я не могу найти функцию для этого.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 15:20 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
а бумаги хватит на такой отчет? ;) Можно сделать курсор, построчно считать и кидать в эксель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 15:28 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
onnlyмне они нужны для занесения их потом в Excel с целью создания отчетов. 65К строк - лимит в екселе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 15:45 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
Рыжий Кот onnlyмне они нужны для занесения их потом в Excel с целью создания отчетов. 65К строк - лимит в екселе... Если данные сразу в сводную таблицу гнать, то этого лимита хватит. Если конечно сводную таблицу "правильно" сделать. У автора похоже проблема именно в начальной выборке, до Excel дело не доходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 16:05 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
Рыжий Кот65К строк - лимит в екселе... Скорее всего идет речь о построении куба (olap) в Excel на основе данных взятых из базы. 2 onnly Вариантов несколько: 1. Оптимизировать запрос 2. Делать расчет кусками 3. Делать предрасчет по евенту 4. Делать предварительную выборку во временную таблицу и только потом суммировать 5. Уменьшить объем данных 6. Искать другие средства для формирования этого отчета. Запросы виснуть не могут - просто иногда время выдачи результата очень большое ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 16:12 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
Если записей действительно очень много, да еще и выборка не оптимизированная, но надо!!!, то наверно пора подумать об OLAP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 16:13 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
С экселем проблем, наверное, не будет.Т.к. до него я еще не дошел. Формировал другие запросы - они выполнялись довольно быстро. Отсылал 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 //неважно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 16:34 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
ой тока алиасы кое-где разные (их две базы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 16:36 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
А если убрать операции группировки в запросе и все попробовать суммировать в Excel в сводной таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 17:07 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
Если делать суммирование и группирование уже в Excel, то я уже уснул, пока у меня эти данные собираются...ИХ слишком много....неуверен влезут ли вообще в Excel - count не работает в SQLExplorer - не посмотреть число строк... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 17:24 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
4 658 725 у меня уже накапало столько записей...... без группир и сумм ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 17:28 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
Помню, что у АСЕ был забавный глюк, который возведен в ранг фичи (где-то в форуме даже было обсуждение): Не контроллируется сооветвие полей агрегации и полей в group by. При таком запросе азешка начинает выполнять этот запрос но при этом жутко тормозит, и как правило такие запросы на относительно больших таблицах заканчиваются забиванием тембдб и отвалом запроса. Вывод: обязательно проверьте правильность перечисленных полей в group by, не полагайтесь в этом деле на синтаксический парсер азе.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 17:34 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
Поля в group by указаны точно верно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 17:45 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
объясните для тупых (мало знающих) поможет ли создать временную таблицу и запихать без отбора ОГРОМНЫЕ ДАННЫЕ, а потом сделать выборку? И как временная создается sql-командами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 18:02 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
4 658 725 это конечно много. Тут уже выше приводили ряд решений Продумайте бизнес-логику и действия пользователя при работе с таким отчетом, может действительно можно ограничить выборку для каждого экземпляра и элемента отчета, по которому группировка идет. P.S. Трудно конечно что-то конкретное советовать, не зная вашей предметной области, структуры базы и т.д. Я давно, на заре работы со сводными таблицами выбирал все и вся, пока не уперся в объем. Потом начал делать отчеты более грамотно, исходя из конкретной задачи отчета. Фильтры добавил, чтобы лишние данные не выбирать и т.д. Много конечно еще от отчетной системы зависит. Ну а теперь уже уже на OLAP-сервер перешел. Все основные агрегаты посчитаны и рассчитаны, фильтры конечно тоже есть и еще много чего, вообщем средство как раз для таких задач. Конечно всюду OLAP-сервер ставить наверно не следует, от задач зависит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 18:27 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
можно попробовать через временную таблицу... что-то вроде: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. НО меня смутила фраза: onnlyой тока алиасы кое-где разные (их две базы) Таблицы в разных базах? А что там с индексами? И не хотите ли взглянуть на план запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 18:45 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
onnlyобъясните для тупых (мало знающих) поможет ли создать временную таблицу и запихать без отбора ОГРОМНЫЕ ДАННЫЕ Поможет ЧЕМУ ? Скорости работы ? Нет , конечно. Приведите DDL таблицы, запрос, план его выполнения, тогда можно будет о чем-то говорить. Иначе разговор безпредметный. автор WHERE //неважно WHERE очень даже важно. Или вы обязательно всю 4M-таблицу хотите сгруппировать обязательно ? Тогда вам только распарралеливание запросов и настройка буферов сотрировки поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 20:07 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
ой DDL таблиц никогда не делал ой:( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 11:44 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
если взять весь запрос, то вот он: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 11:58 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
про DDL уже просвятился.простите за глупый вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 13:11 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
смущает следующее: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 15:53 |
|
||
|
Sybase зависание запроса к огромному количеству данных
|
|||
|---|---|---|---|
|
#18+
А самое главное - у вас в условии WHERE не встречается таблица CELL_MAIN вы просто вешаете сервер!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 15:59 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=69&tid=2012296]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
67ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 386ms |

| 0 / 0 |
