powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Sybase зависание запроса к огромному количеству данных
21 сообщений из 46, страница 2 из 2
Sybase зависание запроса к огромному количеству данных
    #34247715
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
со временем исправил немного.но это не влияет ТАК на временные затраты
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34247811
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вопрос:
после уточнения некоторых данных вкралась ошибка.
sum и avg - убираю.они там не нужны.
должна остаться тока группировка, т.к.там для каждой cellName много записей одинаковых.надо одинаковые исключить.

я пытался записывать по одной записи от каждой CellName во временную таблицу, потом смотреть какая в таблице CellName есть уже, и запрос делать тока уже для оставшихся.
Все "подвисает", как вы догадались.
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34247852
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ой ну группировка тоже тогда не нужна.
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34247866
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
может, неверно выше написал.

мне надо для каждой CellName иметь в выходном результате только одну запись
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34247877
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да в селекте - есть
но в WHERE нет
это значит что вы делаете декартово произведение из этой таблицы и остального резалт сета.

для примера, если вы делаете декатрово произведение двух таблиц по 10 000 строк то в результате у вас 100 000 000 строк. и вы еще заставляете сервер сделать после этого группировку...

и avg(алиас1..CELL_MAIN.TNUCHCNT) вернет вам одно и то-же значение для всех строк.
лучше это вычисление сделать зарание и убрать таблицу CELL_MAIN из селекта.

по моему в dblib такой запрос должен отработать:

Код: 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.
/*возможно нужен другой тип данных*/
declare @tnuchcnt_avg float
/*отдельным запросом тащим avg...*/
select @tnuchcnt_avg=avg(алиас1..CELL_MAIN.TNUCHCNT) from алиас1..CELL_MAIN
/*подставляем переменную в ваш главный запрос*/
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],
@tnuchcnt_avg as tnuchcnt_avg

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 .....
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34247884
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
с Distinct не получается - "виснет" ...
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34247905
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если для cellname должна быть только одна запись, то группировать надо только по cellname
а для всех остальных полей пользовать какую-нибудь агрегацию
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34247932
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо.я понял, что я лох! простите.....вы мне разъяснили и помогли...
ОГРОМНОЕ СПАСИБО, DMITRI!
Я ВАС ВСЕХ НАПУТАЛ - ТО,ЧТО ВЫ МНЕ НАПИСАЛИ В ЛИСТИНГЕ И ВАШИ МЫСЛИ ВЫШЕ - ВСЕ ВЕРНО.
СПАСИБО ЕЩЕ РАЗ.......
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34247976
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще одна лажа...

алиас1..PEAK_SWITCH ни с какой другой таблицей не связан в WHERE.

Уважаемый, да у вас там могут быть миллиарды записей...

запомните, все таблицы из условия FROM должны быть связаны в WHERE !!!
бывает конечно что и нет, но это скорее очень специфическое исключение
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34247978
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
разве что с переменной так не получается - "подвисает"
но сделаю два запроса и выполню просто
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34248011
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а
алиас2..RESOLUTION.resId +10 >= алиас1..PEAK_SWITCH.ID ?
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34248959
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onnlyесли взять весь запрос, то вот он:

SELECT
алиас1..sdmCell.cellName,
алиас1..sdmBsc.bscName,
алиас1..PEAK_SWITCH.TYPE,
Time2.TIME,
sum(алиас1..CELL_GPRS.PCHALLATT)as [PCHALLATT],


Что-то не похоже это на запрос. Что вот прямо вот так, с русскими буквами, и с [xxx] ?
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34249084
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mooon

Time2.TIME BETWEEN convert(datetime,'2006-12-24 00:00:00',102) AND convert(datetime,'2006-12-24 00:00:00',102)
очень может быть что ф-я convert вычисляется для каждой строки из таблицы Time2.

Да не в этом дело. Во-первых, диапазон точечный, это выражение равнозначно выражению

Time2.TIME = convert(datetime,'2006-12-24 00:00:00',102)

Ну да это бог с ним, тоже ерунда.

Главное что такой запрос скорее всего не будет использовать это выражение как SARG (search argument). Потому что чтобы оптимизатор знал конкретую селективность для этого значения,
в выражении должна быть константа или параметр хранимой процедуры.
А так будет браться средняя селективность по колонке, которая по умолчанию что-то типа 20%,
что естественно много для такой большой таблицы.
Надо чтобы было так:

Time2.TIME BETWEEN '20061224 00:00:00' AND '20061224 00:00:00'

или так (что одинаково)

Time2.TIME BETWEEN '20061224' AND '20061224'

Если автор запроса не знает , как задавать даты и время в универсальном формате, пусть посмотрит в FAQ.
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34249096
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и JOIN CONDITIONS у вас там не хватает, и не у одной таблицы, по- видимому.

Кстати, чтобы делать меньше ошибок, пишите лучше в новом синтаксисе ANSI JOIN.
Так и понятнее и удобнее читать, и точно никогда не забудешь ни одного JOIN-а.
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34251843
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1 - "Что-то не похоже это на запрос. Что вот прямо вот так, с русскими буквами, и с [xxx] ?"
естественно нет.просто я зачем-то заменил, кидая в форум.не придирайтесь.

2- "Если автор запроса не знает , как задавать даты и время в универсальном формате, пусть посмотрит в FAQ"

выше я писал "со временем исправил немного" = это значит исправил!

3 - "Я ВАС ВСЕХ НАПУТАЛ " (я писал выше)
значит, я действительно напутал!
даже одну строку в where пропустил - как раз для cellmain.
вот и проблема была.

ТО ЕСТЬ МОЯ ВИНА ПОЛНОСТЬЮ В ТОМ, ЧТО ПРОСИЛ ПОМОЩИ, ДОПУСТИВ ОПЕЧАТКУ И НЕ ОДНУ.
ПРОБЛЕМА уже решена.
СПАСИБО!
ничего не "виснет".

НО ТЕКУЩИЕ ВАШИ РАЗЪЯСНЕНИЯ ПОМОГЛИ МНЕ ___ВООБЩЕ___ ВО МНОГОМ!
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34251941
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onnly1 - "Что-то не похоже это на запрос. Что вот прямо вот так, с русскими буквами, и с [xxx] ?"
естественно нет.просто я зачем-то заменил , кидая в форум.не придирайтесь.


onnly
выше я писал "со временем исправил немного" = это значит исправил!


onnly
значит, я действительно напутал !
даже одну строку в where пропустил - как раз для cellmain.


ОФФ: всё в мужском роде, а емейл то tanya2607@... ;) вот и незнаю что думать ;)
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34252121
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а ты не думай, а предположи, komrad ;)
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34252326
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onnlyа ты не думай, а предположи, komrad ;)

2хОФФ: склоняюсь версии женского рода, а мужской используется в целях мимикрии ;)
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34252569
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может фотосессию?
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34254032
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onnly пишет:

> 1 - "Что-то не похоже это на запрос. Что вот прямо вот так, с русскими
> буквами, и с [xxx] ?"
> естественно нет.просто я зачем-то заменил, кидая в форум.не придирайтесь.

Я еще раз хочу повторить, видимо уже на будущее.
Нет смысла говорить о производительности или оптимизации
какого-то запроса, "похожего" на тот, какой вам нужно заставить
работать быстро и оптимально. Нужно рассматривать именно конкретный
запрос. По крайней мере на низком уровне понимания работы оптимизатора.

Поэтому лучше тупо постить полный запрос. Ничего страшного, что
это будет много.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Sybase зависание запроса к огромному количеству данных
    #34279893
DragoPB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivНу и JOIN CONDITIONS у вас там не хватает, и не у одной таблицы, по- видимому.

Кстати, чтобы делать меньше ошибок, пишите лучше в новом синтаксисе ANSI JOIN.
Так и понятнее и удобнее читать, и точно никогда не забудешь ни одного JOIN-а.


100 % поддерживаю!!! Связка отдельно, условия отдельно! (Мухи отдельно, котлеты отдельно! :))
...
Рейтинг: 0 / 0
21 сообщений из 46, страница 2 из 2
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Sybase зависание запроса к огромному количеству данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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