All streams
Search
Write a publication
Pull to refresh
2
0

Пользователь

Send message

"Нет повести печальнее на свете, чем повесть о SQL-оптимизаторе"!


Работаю с MS SQL 2008R2 — сложилось впечатление, что ядро оптимизатора там серьезно не меняли еще со времен Sybase.
Некоторые запросы оптимизируются очень круто. Но иногда тупит на самых примитивных запросах, чем вводит меня в полный ступор.


Из последнего, фрагмент запроса:


SELECT 
   ...
FROM 
    sometable t1
         INNER JOIN sometable t2
              ON t1.field = t2.field AND
                 t1.id <> t2.id
WHERE
    ...

Тупит страшно, хотя в таблице жалкий лям записей.


Добавляю в WHERE условие:


WHERE
     t1.field IS NOT NULL AND 
     t2.field IS NOT NULL AND 
     ...

О чудо! Выполняется за доли секунды. Записей с заданным field порядка 1% от общего количества.


Что мешает вложить это магическое заклинание в оптимизатор — хз. Ведь очевидно, что предикат в JOIN будет истинным только если field не NULL...

select
    department_id,
    employees,
    tax
from
(
   select
       department_id,
       array_agg(id) as employees,
       sum(tax) as tax,
       sum(salary) as salary,
       count(*)  as cnt,
       count(distinct gender) as genders
   from employee
   group by
       department_id
)
where
    salary > 100000 and
    cnt < 10 and
    genders = 2
Я знаю, серьезные, но не очень серьезные. Так как это преобразование из условия в типы JOIN и собственно WHERE (например как в задаче 2* и ее решении на SQL) и пришлось реализовывать.

Не совсем понял о чем вы… Сейчас условия в JOIN применяются к исходным данным. WHERE к результатам соединения.
У вас предикат в JOIN остался, но добавилось еще многословное объяснение в WHERE какие строчки оставлять, то, что сейчас подразумевается типом JOIN. Выглядит более заумно, а дает ли дополнительные возможности?


А я и не говорил что они эквивалентны, они просто решают одну задачу — OR оператор

Я думал что совершенно разные. UNION работает с множествами однотипных данных, грубо говоря ставит таблички с данными одну за другой по вертикали.
JOIN работает с разнотипными данными. По аналогии — ставит разные таблички рядом друг с другом по горизонтали.
То что вы продемонстрировали в примере — это выхолощенный случай когда выбирается одно ключевое поле., соответственно разницы нет.
Конечно, можно извращаться — сводя разнотипные данные к однотипным добивая их NULL колонками. Но только не от хорошей жизни.

1) WHERE взаимозаменяемо только с INNER JOIN.
Для остальных типов JOIN есть серьезные нюансы.


2) С каких пор UNION / FULL JOIN эквивалентны?


3) В SQL масса других странных вещей. Например, есть HAVING, который полностью эквивалентен подзапросу и WHERE на подзапрос. Причем с WHERE код более читаемый, т.к. уже можно использовать алиасы для вычисляемых колонок.

Может в теории береза и вырастет на 10 метров, но это будет тонкий хлыст, никуда не годный.

Есть нюанс: в Канаде такие породы вряд ли произрастают.


Так что будут канадцы импортировать бамбуковые палочки. А для ЮВА двойной профит и стимул еще больше загаживать планету.

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


С удивлением столкнулся с тем, что бумажные фантики от конфет за три года в компостной куче никак не пострадали. Не знаю, чем пропитывают эту бумагу — но чем это будет лучше пластика — хз.

Лайфхак: если вырубая больше деревьев сажать больше деревьев, то проблема не будет стоять так остро

Есть нюанс. Деревья вырубят сейчас, а новые вырастут лет через 50.

Раньше в обзорах телефонов много внимания уделялось качеству связи. Я еще помню холивары — кто лучше ловит Нокия, Самсунг или LG.


Попробуйте сейчас в любом обзоре смартфона найти хоть слово о качестве связи...


Да и чего об этом писать, когда ИМХО во всех них стоит один и тот же чип ответственный за радиотракт. Гораздо интереснее холивары по поводу монобровей :(

Ну так в сумке же можно носить нормальный удобный планшет, не?

не помню такую тенденцию

А слайдеры, раскладушки тоже не помните?
Телефоны сделали такими маленькими, что, для того чтобы ими было удобно пользоваться, надо было их раскладывать.

Вы разницу между словами "можно" и "удобно" чувствуете? Это не проблема зрения.
Можно работать за 14" монитором, но за 28" монитором удобнее. Я понятно объясняю?

А где я призывал кого-то отказываться от смартфонов? Я лишь свое мнение высказал.


Ваш смартфон в 4 (четыре, Карл!) раза больше моего телефона. И вам его удобно носить в кармане? Для вьюношей со взором горящим напомню, что, когда-то, каждое поколение телефонов было миниатюрнее предыдущего и на обладателей старых лопат смотрели как на нищебродов. Маркетологи, как всегда, переобулись в прыжке — но мы то помним.


Ваш смартфон в 4 раза меньше моего планшета. И вы на голубом глазу пытаетесь меня уверить, что на нем комфортно серфить в интернете? Читать книги? Пользоваться картами? Играть в игры, наконец? Может вы и кино через 5-ти дюймовую дырочку смотрите с удовольствием?

Вы бы еще удивились, что наркобароны сами на дури не сидят, хотя ее толкают.

Телефон лежит в кармане, где то рядом с ключами и бумажником (и не самый большой из перечисленного) и всегда со мной.


Планшет обитает в сумке, где, кроме него лежат другие нужные для повседневной жизни вещи. Сумка ходит со мной на работу, ездит со мной в машине.


Про размеры совсем не смешно. Мне 10" планшет кажется маленьким. Но им хотя бы можно пользоваться без очков. А что вы видите на своих лопатах — вообще загадка.


ЗЫ Неоднократно пытался пользоваться смартфоном жены — только рвотный рефлекс и боль в глазах. Зачем так так издеваться над собой?

Я программист, и у меня никогда не было, нет и не будет смартфона.


Не вижу ни одного его полезного свойства для себя, кроме портативной камеры (как и отметил автор).


Основные претензии две — время автономной жизни и размер. Люди, как вы носите эти лопаты? Не, даже не так — ЛОПАТЫ!


Потребности в мобильном интернете раньше решал нетбук с 3G свистком, сейчас — 10" планшет.


И да — это не челленж и в моей позиции ничего не изменится, если не поменяется моя работа/образ жизни.

По поводу п.3 предположу, что умные люди понимают, что таких как Зимов надо держать за высоким забором. Видимо уроки Австралии, борщевика и т.п. безответственных экологических авантюр идут впрок.

А вот если всю тундру «засеять» зубрами/бизонами, сколько мяса/тушенки страна сможет продавать заграницу в валютном эквиваленте

Мне кажется, что именно так рассуждали протоЗимовы, когда планировали все поля засадить борщевиком. Чем это кончилось мы все видим.


Как бы постПафнутиям не пришлось расхлебывать последствия деятельности нынешних Зимовых.


Как он радуется:


2-3 года и могучие леса исчезают. Не нужны мамонты, оленята справляются.

Только свести лес легко — а восстановить совсем не просто.

Чем олень поможет росту сосен, которые прекрасно себя чувствуют практически на голом песке?

Information

Rating
Does not participate
Location
Витебск, Витебская обл., Беларусь
Registered
Activity