"Нет повести печальнее на свете, чем повесть о 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 код более читаемый, т.к. уже можно использовать алиасы для вычисляемых колонок.
Не все так просто. То, что легко гниет и разлагается, будет также легко гнить и разлагаться еще на магазинных полках.
С удивлением столкнулся с тем, что бумажные фантики от конфет за три года в компостной куче никак не пострадали. Не знаю, чем пропитывают эту бумагу — но чем это будет лучше пластика — хз.
Раньше в обзорах телефонов много внимания уделялось качеству связи. Я еще помню холивары — кто лучше ловит Нокия, Самсунг или LG.
Попробуйте сейчас в любом обзоре смартфона найти хоть слово о качестве связи...
Да и чего об этом писать, когда ИМХО во всех них стоит один и тот же чип ответственный за радиотракт. Гораздо интереснее холивары по поводу монобровей :(
А слайдеры, раскладушки тоже не помните?
Телефоны сделали такими маленькими, что, для того чтобы ими было удобно пользоваться, надо было их раскладывать.
Вы разницу между словами "можно" и "удобно" чувствуете? Это не проблема зрения.
Можно работать за 14" монитором, но за 28" монитором удобнее. Я понятно объясняю?
А где я призывал кого-то отказываться от смартфонов? Я лишь свое мнение высказал.
Ваш смартфон в 4 (четыре, Карл!) раза больше моего телефона. И вам его удобно носить в кармане? Для вьюношей со взором горящим напомню, что, когда-то, каждое поколение телефонов было миниатюрнее предыдущего и на обладателей старых лопат смотрели как на нищебродов. Маркетологи, как всегда, переобулись в прыжке — но мы то помним.
Ваш смартфон в 4 раза меньше моего планшета. И вы на голубом глазу пытаетесь меня уверить, что на нем комфортно серфить в интернете? Читать книги? Пользоваться картами? Играть в игры, наконец? Может вы и кино через 5-ти дюймовую дырочку смотрите с удовольствием?
Телефон лежит в кармане, где то рядом с ключами и бумажником (и не самый большой из перечисленного) и всегда со мной.
Планшет обитает в сумке, где, кроме него лежат другие нужные для повседневной жизни вещи. Сумка ходит со мной на работу, ездит со мной в машине.
Про размеры совсем не смешно. Мне 10" планшет кажется маленьким. Но им хотя бы можно пользоваться без очков. А что вы видите на своих лопатах — вообще загадка.
ЗЫ Неоднократно пытался пользоваться смартфоном жены — только рвотный рефлекс и боль в глазах. Зачем так так издеваться над собой?
По поводу п.3 предположу, что умные люди понимают, что таких как Зимов надо держать за высоким забором. Видимо уроки Австралии, борщевика и т.п. безответственных экологических авантюр идут впрок.
"Нет повести печальнее на свете, чем повесть о SQL-оптимизаторе"!
Работаю с MS SQL 2008R2 — сложилось впечатление, что ядро оптимизатора там серьезно не меняли еще со времен Sybase.
Некоторые запросы оптимизируются очень круто. Но иногда тупит на самых примитивных запросах, чем вводит меня в полный ступор.
Из последнего, фрагмент запроса:
Тупит страшно, хотя в таблице жалкий лям записей.
Добавляю в WHERE условие:
О чудо! Выполняется за доли секунды. Записей с заданным field порядка 1% от общего количества.
Что мешает вложить это магическое заклинание в оптимизатор — хз. Ведь очевидно, что предикат в JOIN будет истинным только если field не NULL...
Не совсем понял о чем вы… Сейчас условия в JOIN применяются к исходным данным. WHERE к результатам соединения.
У вас предикат в JOIN остался, но добавилось еще многословное объяснение в WHERE какие строчки оставлять, то, что сейчас подразумевается типом JOIN. Выглядит более заумно, а дает ли дополнительные возможности?
Я думал что совершенно разные. UNION работает с множествами однотипных данных, грубо говоря ставит таблички с данными одну за другой по вертикали.
JOIN работает с разнотипными данными. По аналогии — ставит разные таблички рядом друг с другом по горизонтали.
То что вы продемонстрировали в примере — это выхолощенный случай когда выбирается одно ключевое поле., соответственно разницы нет.
Конечно, можно извращаться — сводя разнотипные данные к однотипным добивая их NULL колонками. Но только не от хорошей жизни.
1) WHERE взаимозаменяемо только с INNER JOIN.
Для остальных типов JOIN есть серьезные нюансы.
2) С каких пор UNION / FULL JOIN эквивалентны?
3) В SQL масса других странных вещей. Например, есть HAVING, который полностью эквивалентен подзапросу и WHERE на подзапрос. Причем с WHERE код более читаемый, т.к. уже можно использовать алиасы для вычисляемых колонок.
Может в теории береза и вырастет на 10 метров, но это будет тонкий хлыст, никуда не годный.
Есть нюанс: в Канаде такие породы вряд ли произрастают.
Так что будут канадцы импортировать бамбуковые палочки. А для ЮВА двойной профит и стимул еще больше загаживать планету.
Не все так просто. То, что легко гниет и разлагается, будет также легко гнить и разлагаться еще на магазинных полках.
С удивлением столкнулся с тем, что бумажные фантики от конфет за три года в компостной куче никак не пострадали. Не знаю, чем пропитывают эту бумагу — но чем это будет лучше пластика — хз.
Есть нюанс. Деревья вырубят сейчас, а новые вырастут лет через 50.
HUAWEI MediaPad M5
Раньше в обзорах телефонов много внимания уделялось качеству связи. Я еще помню холивары — кто лучше ловит Нокия, Самсунг или LG.
Попробуйте сейчас в любом обзоре смартфона найти хоть слово о качестве связи...
Да и чего об этом писать, когда ИМХО во всех них стоит один и тот же чип ответственный за радиотракт. Гораздо интереснее холивары по поводу монобровей :(
Ну так в сумке же можно носить нормальный удобный планшет, не?
А слайдеры, раскладушки тоже не помните?
Телефоны сделали такими маленькими, что, для того чтобы ими было удобно пользоваться, надо было их раскладывать.
Вы разницу между словами "можно" и "удобно" чувствуете? Это не проблема зрения.
Можно работать за 14" монитором, но за 28" монитором удобнее. Я понятно объясняю?
А где я призывал кого-то отказываться от смартфонов? Я лишь свое мнение высказал.
Ваш смартфон в 4 (четыре, Карл!) раза больше моего телефона. И вам его удобно носить в кармане? Для вьюношей со взором горящим напомню, что, когда-то, каждое поколение телефонов было миниатюрнее предыдущего и на обладателей старых лопат смотрели как на нищебродов. Маркетологи, как всегда, переобулись в прыжке — но мы то помним.
Ваш смартфон в 4 раза меньше моего планшета. И вы на голубом глазу пытаетесь меня уверить, что на нем комфортно серфить в интернете? Читать книги? Пользоваться картами? Играть в игры, наконец? Может вы и кино через 5-ти дюймовую дырочку смотрите с удовольствием?
Вы бы еще удивились, что наркобароны сами на дури не сидят, хотя ее толкают.
Телефон лежит в кармане, где то рядом с ключами и бумажником (и не самый большой из перечисленного) и всегда со мной.
Планшет обитает в сумке, где, кроме него лежат другие нужные для повседневной жизни вещи. Сумка ходит со мной на работу, ездит со мной в машине.
Про размеры совсем не смешно. Мне 10" планшет кажется маленьким. Но им хотя бы можно пользоваться без очков. А что вы видите на своих лопатах — вообще загадка.
ЗЫ Неоднократно пытался пользоваться смартфоном жены — только рвотный рефлекс и боль в глазах. Зачем так так издеваться над собой?
Я программист, и у меня никогда не было, нет и не будет смартфона.
Не вижу ни одного его полезного свойства для себя, кроме портативной камеры (как и отметил автор).
Основные претензии две — время автономной жизни и размер. Люди, как вы носите эти лопаты? Не, даже не так — ЛОПАТЫ!
Потребности в мобильном интернете раньше решал нетбук с 3G свистком, сейчас — 10" планшет.
И да — это не челленж и в моей позиции ничего не изменится, если не поменяется моя работа/образ жизни.
По поводу п.3 предположу, что умные люди понимают, что таких как Зимов надо держать за высоким забором. Видимо уроки Австралии, борщевика и т.п. безответственных экологических авантюр идут впрок.
Мне кажется, что именно так рассуждали протоЗимовы, когда планировали все поля засадить борщевиком. Чем это кончилось мы все видим.
Как бы постПафнутиям не пришлось расхлебывать последствия деятельности нынешних Зимовых.
Как он радуется:
Только свести лес легко — а восстановить совсем не просто.
Чем олень поможет росту сосен, которые прекрасно себя чувствуют практически на голом песке?