ビリャチピスデツナフイ Войти !bnw Сегодня Клубы
modern sql, slides: http://www.slideshare.net/MarkusWinand/modern-sql Всем, кто использует sql руками, рекомендую ознакомиться/вспомнить.
#B19RW0 / @gds / 3363 дня назад

> http://www.slideshare.net/ бан за пиар параши
#B19RW0/4VK / @komar / 3363 дня назад
@komar так тоже пойдёт, только кнопочек и стрелочек меньше, и ничего не понятно, куда нажимать.
#B19RW0/3YP / @gds --> #B19RW0/7U7 / 3363 дня назад
> SQL has gone out of fashion lately—partly due to the NoSQL movement, but mostly because SQL is often still used like 20 years ago. > а давайте делать джойны вложенными селектами
#B19RW0/TIX / @mugiseyebrows / 3363 дня назад
Бля, смотрю на десятую страницу и нихуя не понимаю. Кто-то analyze не нажал, что ли?
#B19RW0/8GL / @komar / 3363 дня назад
@komar а вот там непонятно. Ставлю на то, что оптимизатор не умеет в nested loops. // кладу на самом деле
#B19RW0/HB3 / @gds --> #B19RW0/8GL / 3363 дня назад
@gds Вот у меня он все умеет, а у них не умеет. Ладно, потом не будет лень — проверю, сейчас сплю уже на ходу.
#B19RW0/NZ7 / @komar --> #B19RW0/HB3 / 3363 дня назад
> подзапросы хуйня ипаная ибо хз читать тяжело, давайте использовать with Ну это вообще пушка. WITH не оптимизируется вообще никак (и эту особенность я даже сумел использовать для грязных оптимизаций, лол). Чтобы было читаемо — надо CREATE TEMPORARY VIEW.
#B19RW0/KL7 / @komar / 3363 дня назад
Ой, объясняют, как работает WITH RECURSIVE. Наконец-то я понял.
#B19RW0/ILW / @komar / 3363 дня назад
На странице 100 зачем-то изобрели велосипедный LIMIT, причем изобрели отвратительно. Если не выебываться с OVER(ORDER BY ...), а сделать ORDER BY подзапросом, то все соптимизируется.
#B19RW0/BG5 / @komar / 3363 дня назад
@komar надеюсь, постгресик научится оптимизировать with. Иначе какой в этом смысл. Только для "сделай мне временную таблицу в пределах запроса"? temporary view, однако, тоже неплохо было бы.
#B19RW0/O6U / @gds --> #B19RW0/KL7 / 3363 дня назад
@gds Ну это смотря чего мы хотим от этого with. Temporary view — это медленно и пиздец, я считаю. With в качестве алиаса для подзапроса выглядел бы гораздо лучше. Однако сейчас можно использовать with для того, чтобы зафорсить выборку строк. Иногда бывает полезно, я гарантирую это. В документации явно прописано, что with никак не оптимизируется, так что можно считать это фитчей, а не багом. Вот насколько мы ее хотим — это уже другой разговор.
#B19RW0/9QL / @komar --> #B19RW0/O6U / 3363 дня назад
@komar вот там я вообще не понял, что они хотели рассказать. select * from data order by x limit 10, и дальше чпокай эти данные как хочешь.
#B19RW0/49Y / @gds --> #B19RW0/BG5 / 3363 дня назад
@gds Ну погодь. Мы в восемьсот лохматом году, лимит еще не изобрели.
#B19RW0/1TJ / @komar --> #B19RW0/49Y / 3363 дня назад
@komar Бля, наврал, нихрена оно не оптимизирует. Странно, я с какого-то случая запомнил, что оно умеет отсекать по row_number()
#B19RW0/D4X / @komar --> #B19RW0/BG5 / 3363 дня назад
TIL delete returning
#B19RW0/RTO / @anonymous / 3362 дня назад
TIL FILTER // such wow
#B19RW0/4RG / @anonymous / 3362 дня назад
TIL without overlaps // whoa
#B19RW0/U5A / @anonymous / 3362 дня назад
@anonymous да вообще обосраться
#B19RW0/FMC / @komar --> #B19RW0/U5A / 3362 дня назад
> https://i.imgur.com/BXTVwxk.png лол, недавно тонны подобного говна удалил
#B19RW0/S70 / @kb / 3361 день назад
@kb на клиенте обрабатывал, небось?
#B19RW0/T2E / @gds --> #B19RW0/S70 / 3361 день назад
@gds В смысле что куда удалял? Да, вообще sql выкинул (вместе с мэп-редьюсами и прочим хламом), все в памяти считаю.
#B19RW0/YU2 / @kb --> #B19RW0/T2E / 3361 день назад
@kb везуха. У меня часто не получается всё в память впихнуть.
#B19RW0/3FU / @gds --> #B19RW0/YU2 / 3361 день назад
@gds Да, у меня тут другая специфика, видимо. Тут SQL вообще не очень вариант изначально (5-этажные запросы по нескольку часов работали), не знаю кто додумался его впилить.
#B19RW0/6W3 / @kb --> #B19RW0/3FU / 3361 день назад
@kb а расскажи, что за задача такая, что sql никак? Мне это интересно потому, что считаю, что sql применим в большинстве задач, и хочется знать, где точно не стоит его применять, чтобы онус был цел.
#B19RW0/CUY / @gds --> #B19RW0/6W3 / 3361 день назад
@gds Ну как єто "никак". Был себе как много лет, просто превратился в многочасовые да еще и трехэтажные запросы при простоте задачи. Задача проста. Есть тонны событий, нужно считать их всякие там суммы и т.п. (например, события о просмотре страничек, нужно посчитать для каждого клиента за каждый час сумму просмотров и т.п.). Было так: сначала какие-то мап-редюсы через riak, потом выгруз в SQL и потом какие-то гигантские запросы. Вот пример одного из них (этот по дню суммирует, кажется, уже лень было вникать заново, выдрал рандомный кусок): https://gist.github.com/k-bx/8dfc7b78bd7eefabe059 Все это говно заменилось уютным пробегом всех событий в памяти, при этом описанием счетчиков в виде Fold'ов из библиотеки foldl: https://gist.github.com/k-bx/b6b4659875de7e11fe4d Я пьян, потому скорее всего сумбурно все описал, да и описывать в подробностях довольно долго, а может тебе что-то другое интересно. Если по поводу SQL -- я тут имел в виду что в принципе получается он узким местом при большом кол-ве данных, и либо его масштабировать (что реально, но геморно ведь), либо бежать от него (что для моих простых счетчиков всяких там довольно несложно).
#B19RW0/FYT / @kb --> #B19RW0/CUY / 3361 день назад
@kb ты описал всё доступно и понятно. Мне было интересно именно это.
#B19RW0/G7P / @gds --> #B19RW0/FYT / 3360 дней назад
@gds надеюсь ты оценил трюк по первой ссылке с generatedNumbersAiBiCi
#B19RW0/UPV / @kb --> #B19RW0/G7P / 3360 дней назад
@kb ага. Изврат. В орацле я делал табличку с числами от 0 до 999, index-organized, а в постгресике взял бы generate_series или типа того.
#B19RW0/8DL / @gds --> #B19RW0/UPV / 3360 дней назад
@komar ты тупой блять
#B19RW0/M7D / @anonymous --> #B19RW0/ILW / 3324 дня назад
@anonymous а хули ты думал
#B19RW0/982 / @komar --> #B19RW0/M7D / 3324 дня назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.