Size: a a a

SqlCom.ru - Стиль жизни SQL

2021 January 13

g

greeninsania in SqlCom.ru - Стиль жизни SQL
Andrew Komarov
деление на ноль работает?
Не, сортировка не обрабатывается просто, эксепшн не вылетает, оконка отрабатывает и не ругается на отсутствие order by)
источник

g

greeninsania in SqlCom.ru - Стиль жизни SQL
Andrew Komarov
деление на ноль работает?
По сути тоже самое что и order by (select null) в окне.
источник

g

greeninsania in SqlCom.ru - Стиль жизни SQL
Потому так и пишу, потому что долго удивлялся, как это, на ноль делить))
источник

AK

Andrew Komarov in SqlCom.ru - Стиль жизни SQL
greeninsania
По сути тоже самое что и order by (select null) в окне.
уже в студии проверил, удивительно)
источник

KT

Konstantin Taranov in SqlCom.ru - Стиль жизни SQL
greeninsania
Использую
order by 1/0
Такие хаки прикольно чтобы удивить коллег, но можно выстрелить себе в ногу если Microsoft поменяет поведение оптимизатора (яркий пример подобного разобран здесь https://www.brentozar.com/archive/2020/06/when-a-columnstore-index-makes-your-query-fail/)

Но! Самое плохое в этом это то что человеку, которому придется иметь дело с вашим кодом в будущем потребуется дополнительное время чтобы понять ваш код, позаботьтесь о будущем своего кода - пишите как для себя любимого
источник

Д

Денис Лёвкин... in SqlCom.ru - Стиль жизни SQL
С тем же успехом можно критиковать о возможном выстреле в ногу при использовании querystore и planguide. Если решение работает, хотя и относится к разряду хака оно имеет право на использование. Выстрелить в ногу можно огромным количеством способов, но не факт что это вообще случится.
источник

S

SergeyK in SqlCom.ru - Стиль жизни SQL
Добрый день. Кто нибудь готовился к интервью по книге SQL the One: Microsoft SQL Server Interview Guide?
источник

IC

Igor Chizhov in SqlCom.ru - Стиль жизни SQL
Konstantin Taranov
Такие хаки прикольно чтобы удивить коллег, но можно выстрелить себе в ногу если Microsoft поменяет поведение оптимизатора (яркий пример подобного разобран здесь https://www.brentozar.com/archive/2020/06/when-a-columnstore-index-makes-your-query-fail/)

Но! Самое плохое в этом это то что человеку, которому придется иметь дело с вашим кодом в будущем потребуется дополнительное время чтобы понять ваш код, позаботьтесь о будущем своего кода - пишите как для себя любимого
Это точно. Помню своё недоумение, когда в рабочем коде функции увидел CAST 'Error' AS int 😳 Оказалось, что это специально вызывался Exception, который обрабатывался приложением. И, конечно же, при использовании функции в другом месте приложения нарвались.
источник

KT

Konstantin Taranov in SqlCom.ru - Стиль жизни SQL
Денис Лёвкин
С тем же успехом можно критиковать о возможном выстреле в ногу при использовании querystore и planguide. Если решение работает, хотя и относится к разряду хака оно имеет право на использование. Выстрелить в ногу можно огромным количеством способов, но не факт что это вообще случится.
конкретно в этом случае - эта мина замедленного действия, мало того что это не ANSI SQL, так и в будущих версиях SQL Server при смене логики работы оптимизатора будет ошибка, так что в данном случае это выстрел в ногу
источник

S

Simon in SqlCom.ru - Стиль жизни SQL
Доброе утро, подскажите пожалуйста, сильно ли влияет на производительность если во время селекта сравнить 2 столбца  в разных таблицах с типами данных varchar и nvarchar(...) . В плане запроса висит предупреждение ⚠️ ‘Type conversion in expression ( CONVERT_IMPLICIT(nvarchar(...), столбец, 0)) may affect “CardinalityEstimate” in query plan choice” ‘
источник

IC

Igor Chizhov in SqlCom.ru - Стиль жизни SQL
На больших объемах данных может сильно повлиять.
источник

S

Simon in SqlCom.ru - Стиль жизни SQL
Да, речь как раз о большой нагрузке
источник

O

Oleg T in SqlCom.ru - Стиль жизни SQL
Simon
Да, речь как раз о большой нагрузке
Повлияет. Чтобы сравнить придется перекодировать один из столбцов, эти типы данных имеют разный размер в байтах со всеми вытекающими
источник

S

Snusmumrick in SqlCom.ru - Стиль жизни SQL
Доброго времени суток. Прохожу упражнения в конструкторе, задача стоит такая:" Найдите производителя, выпускающего ПК, но не ПК-блокноты".
Вот код:
select distinct maker from product
where not (type='Laptop' and type='Printer') and type='PC'
Выводит на 2 строки больше, чем нужно
источник

S

Snusmumrick in SqlCom.ru - Стиль жизни SQL
К производителю "Е" выводит еще производителей "А" и "В"
источник

AP

Andrew Postnov in SqlCom.ru - Стиль жизни SQL
Вы выбираете строки, в которых нет типа лаптоп и принтер и в которых тип равно ПК.  То есть в выборку могут попасть производители, которые производят ПК и лаптоп. А надо выбрать производителей, которые не производят лаптоп. :)
источник

S

Snusmumrick in SqlCom.ru - Стиль жизни SQL
where type<>'Laptop' and type='PC', выдает такой же результат
источник

AP

Andrew Postnov in SqlCom.ru - Стиль жизни SQL
есть 2 производителя, один производит только ПК, второй ПК и лэптопы. Есть список их продуктов, в этом списке есть ПК и Лэптопы.
Вы из этого списка выбираете строки только по ПК, конечно же в эту выборку попадут оба производителя.
источник

S

Snusmumrick in SqlCom.ru - Стиль жизни SQL
Теперь понятно, спасибо!
источник

AS

Alexander Shishkin in SqlCom.ru - Стиль жизни SQL
Небольшой вопрос, может кто сталкивался. Есть задание SQL агента, выполняется раз в минуту. Внутри него шаг, который выполняется 1 минуту и 5 сек. Соответственно, SQL агент будет пропускать каждое второе задание, потому что оно еще не было завершено на момент старта новой итерации. Вопрос: это как то можно обойти? Хотелось бы, чтобы он или кильнул предыдущее выполнение, или запустился сразу после окончания предыдущей итерации.
источник