|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Мощности серверу добавить сложнее. Ограничения сервера не столько в процессорном времени, сколько в блокировках. Если более сложный запрос дольше держит блокировку, то доп.ядра тут не помогут. А клиентам хз зачем наращивать, у них обычно проц простаивает. Насчет трафика непонятно. Например, если задача стоит возвращать количество и цену или количество, цену и сумму, то трафик больше при расчете на сервере. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:28 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Я понимаю твою иронию специалиста по крупным проектам )) Вступать в дискуссию - как правильно, как лучше и т.п. не хочу, это оффтопик здесь будет. Просто отвечу на твой вопрос. На сервере просто следил за загрузкой процессора и дисков. Когда год назад мне перестала нравиться дисковая загрузка, попросил ИТ-отдел удвоить память, результат был налицо. На клиенте просто по отзывчивости работы клиента, срокам отклика интерфейса, благо сам работал в том числе как пользователь в том, что разрабатывал; когда просто помогал пользователям что-то делать, ну и многие пользователи были приучены сообщать о замедлении работы в той или иной сфере. Ну еще мониторил иногда профайлером запросы с большим duration или cpu. Последнее время мощность офисных рабочих станций не имеет тенденции к постоянному увеличению, наблюдается застой и даже сокращение (за счет, например, массового перехода на нетбуки)... И да, речь, конечно, была о двухзвенке. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:31 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Dima TНасчет трафика непонятно. Например, если задача стоит возвращать количество и цену или количество, цену и сумму, то трафик больше при расчете на сервере.ну, грубо говоря, если стоит вариант передавать несколько аргументов функции, либо результат этой функции. Кроме того, всегда старался избежать лишнего запроса к серверу. То есть если есть вариант вернуть больше данных одним запросом, но сэкономить на лишнем запросе, выбирал больше данных. Повторюсь, речь о двухзвенке. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:34 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Shocker.Pro, а где ты увидел иронию? Мне просто интересно, кто чем пользуется и как. МСУ помнится смог себе SCOM позволить :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:37 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
skyANAShocker.Pro, а где ты увидел иронию?а, тады сорри ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:39 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Простите великодушно, что прерываю Вашу милую беседу своими расспросами.. Код: sql 1. 2. 3. 4. 5. 6. 7.
Что то мне подсказывает дополнительное дублирующее вычисление Sum(case when [Вид работ]=N'погрузка' then Тонны else 0 end) *стоимость часа AS Total излишне. Как то можно заменить на что то типа Expr1*стоимость часа AS Total? А то так то получается, что одно и тоже значение вычисляется дважды ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 08:46 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
mdm114Простите великодушно, что прерываю Вашу милую беседу своими расспросами..На момент твоего поста, беседа закончилась 15 часов назад. mdm114 Код: sql 1. 2. 3. 4. 5. 6. 7.
Что то мне подсказывает дополнительное дублирующее вычисление Sum(case when [Вид работ]=N'погрузка' then Тонны else 0 end) *стоимость часа AS Total излишне. Как то можно заменить на что то типа Expr1*стоимость часа AS Total? А то так то получается, что одно и тоже значение вычисляется дваждыИ что? План выполнения от этого сильно хуже, скорость проседает? Ну используй эту часть: Код: sql 1. 2. 3. 4. 5. 6.
как подзапрос, или CTE, или представление, или данные для временной таблицы, или данные для денормализации... или вычисляй Total на клиенте ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 11:21 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 12:03 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 13:03 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
По хорошему просто Код: sql 1. 2. 3. 4. 5.
Остальное допилить на клиенте по получению. Если на сервере допиливать, то через временную таблицу. Лучше сначала выбрать необходимое во временную таблицу, а потом выборка из нее. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Не стоит пытаться все утрамбовать в один запрос. MS SQL на сложных запросах иногда нездоровый план делает. Сталкивался со случаями когда запрос работающий 10-15 сек, после подобного разбиения выполнялся менее секунды. И блокировки не надо держать больше чем надо. Выбрал, GO, и допиливай никому не мешая. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 14:49 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
mdm114 Код: sql 1.
Что то мне подсказывает дополнительное дублирующее вычисление Sum(case when [Вид работ]=N'погрузка' then Тонны else 0 end) *стоимость часа AS Total излишне. Как то можно заменить на что то типа Expr1*стоимость часа AS Total? А то так то получается, что одно и тоже значение вычисляется дважды Мне что-то подсказывает что ты не то считаешь. Такой результат ожидается? Заказчикстоимость часаПогрузкаСтоимость...Заказчик1100500...Заказчик1200400...Заказчик2100700... Или так надо? ЗаказчикПогрузкаСтоимость...Заказчик1900...Заказчик2700... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 15:02 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Dima TЕсли на сервере допиливать, то через временную таблицу. Лучше сначала выбрать необходимое во временную таблицу, а потом выборка из нее.Для более сложных случаев совершенно согласен - оптимизатор начинает захлебываться, когда городишь сложные куски. У меня случай был - поменяли сервер на более мощный, в частности проц - с одноядерного на восьмиядерный. Так один из часто используемых запросов выборки стал выполняться 10 сек вместо 1 сек на одноядерном сервере. Оптимизатор радостно увидел возможность распараллеливания запроса и... лоханулся. Переход на временную таблицу решил проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 15:12 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Dima T, второй вариант. НО, я всеж буду разбивать на несколько таблиц следуя советам выше. Иначе такой огород получается.. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 12:44 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Shocker.ProУ меня случай был - поменяли сервер на более мощный, в частности проц - с одноядерного на восьмиядерный. Так один из часто используемых запросов выборки стал выполняться 10 сек вместо 1 сек на одноядерном сервере. Оптимизатор радостно увидел возможность распараллеливания запроса и... лоханулся. Переход на временную таблицу решил проблему. OPTION (MAXDOP number) Configure the max degree of parallelism Server Configuration Option ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 13:27 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Dima TЕсли на сервере допиливать, то через временную таблицу. Лучше сначала выбрать необходимое во временную таблицу, а потом выборка из нее.Сомнительное удовольствие. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 13:31 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
mdm114Dima T, второй вариант. НО, я всеж буду разбивать на несколько таблиц следуя советам выше. Иначе такой огород получается.. тогда умножать внутри sum() Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 13:35 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Спасибо, чуть попозже вернусь к этому запросу. Переделка одного влечет за собой попутно и переделку еще нескольких вещей. Сейчас закипел над таблицей с аналогичным вопросом: Реально ли все совместить в одном запросе? № Погрузка - Наладка - Обработка - Прочее1.----0----------200---------0-----------4002.----0-----------0---------400-----------03.----0----------400---------0-----------6004.---300----------0---------800-----------0 Нужно среднее значение по каждому виду работ. ---300---300---600--500 SELECT AVG(Погрузка) AS e1, AVG(Наладка) AS e2.. FROM Table.. В данном случае правильным подсчетам мешают нули? Ставить что то типа WHERE погрузка !=0 не вариант. Тогда не учитываются 2ая и 4ая строка в Наладке. Есть конечно вариант, разбить на четыре таблицы. А вот в одном запросе реально совместить? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 11:26 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Код: sql 1.
А вообще, по-хорошему, именно NULL-ы, а не нули должны быть в базе, там где нет значения ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 11:31 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Shocker.Pro, при NULL иногда приходится в коде через try что то делать. А это в свою очередь в определенных моментах такие тормоза добавляет ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 11:56 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
mdm114иногда приходится в коде через try что то делатьЭто странно. Что например? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 12:01 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Shocker.Pro, № . -н1-- н2--н3--н41. ---1----2----3---42. ---1----2----3---43 - --1---NULL-2---3 decimal dc= table.tbl[0].н1 decimal dc= table.tbl[1].н1 decimal dc= table.tbl[2].н1 ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 13:04 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Я не очень понял, где тут повод для try Можно использовать проверку на null, можно использовать оператор ??, можно использовать тип decimal? вместо decimal... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 13:21 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
а можно меня носом ткнуть в какой нить пример ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 15:39 |
|
Помогите с запросом с двумя select
|
|||
---|---|---|---|
#18+
Пример чего? Я не понял первичной задачи. В любом случае, try используется в первую очередь для перехвата исключений, генерируемых, как правило, ситуациями, когда что-то пошло не так. А если в программе изначально закладывается возможность, когда некое поле может принимать значение null, то это нормальная, не исключительная ситуация и try здесь никак не должен ее обрабатывать. По заполнение БД я говорю из опыта. Когда по логической сути задачи в БД отсутствие значение, то нужно заносит Null, а не какое-то искусственный заменитель типа 0 или -1 или других так называемых "волшебных" числе или строк. Тогда и вопрос с AVG не возник бы сам собой. В большинстве случаев такой подход оправдан, однако, возможно, в вашем конкретном случае оправдано использование нуля по каким-то специфическим причинам. Именно поэтому я просил привести пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 16:08 |
|
|
start [/forum/topic.php?fid=17&msg=39166769&tid=1349420]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 232ms |
total: | 495ms |
0 / 0 |