Могу. Но он будет неэффективный.
т.е. не можешь
Т. Е. Не очень можешь
Могу, но не очень. Но могу. Но не очень. А я еще завариваю хороший кофе. На работу возьмете?
Если кофе ты делаешь так же как умеешь отвечать на поставленные вопросы, то нет
:(
Никто не может. Никто.
Будьте реалистами, если запрос делает то, что вы от него хотите, то он эффективный. Многомиллионные корпорации не парятся, с чего обычным людям от этого в депрессию впадать.
Корпорации покупают новые сервера на сдачу от офисного кофе. Им не нужна эффективность, им нужно "завтра у меня отчет о проделанной работе, сделай к сроку".
завтра ... ха, наивный чукотский юныша, порой отчёт и выполненная работа нужна была ещё вчера.
Порой? Всегда.
Сделать к вчера - чтоб всегда ... опять слишком оптимистично,
потому что порой нужно сделать к __позавчера__ или ранее.
потому что порой нужно сделать к __позавчера__ или ранее.
А еще забыл, все отчеты на вчера и позавчера, делаются из массива благородного дерева с щепоткой удобрения благородных животных и с мыслями: потом перепишу нормально (с)
Помню как-то начальник начальника пришёл ко мне и начал спрашивать ,почему они не получают значения учёта нового продукта, который запустили на прошлой неделе. Было забавно, ведь ни я, и даже мой непосредственный начальник, не были в курсе, что они вообще что-то новое запускали.
Как обычно, директор что-то решил, дали срок месяц и пустили всё по цепочке вниз. Каждое звено отжирало неделю на перекладывание всяких бумажек и планирование ахуенных работ. А потом приходят к тебе и "ты ещё неделю назад должен сделать вот это".
Как обычно, директор что-то решил, дали срок месяц и пустили всё по цепочке вниз. Каждое звено отжирало неделю на перекладывание всяких бумажек и планирование ахуенных работ. А потом приходят к тебе и "ты ещё неделю назад должен сделать вот это".
А ты ему «тикета нет, тасочки нет, пошел в жопу».
Вот так и появляются на свет лагающие игры.
Скрипты работают? - Работают. Всё - релизим.
Скрипты работают? - Работают. Всё - релизим.
Видел я такие "эффективные" запросы, которые oracledb вгоняли в хтонический ахуй, но цель достигалась, да.
А че не просто Oracle? Думаешь, их еще с чем-то ассоциируют?
Да, очень часто ассоциируют с оracle vm или oracle linux
VM - это VirtualBox который? А про линукс, ну знаю, есть, но чтобы кто-то юзал, хз
VM - это VirtualBox, да всё верно, oracle linux ОЧЕНЬ часто используется особенно из за того, что он неплохо заточен под aws, хотя у них и свой дистр есть.
Ну бокс онр купили просто, а про использование линукса я не знал, спасибо
Ага, с джавой.
Так на собеседовании и скажут.
нет никаких эффективных запросов. Есть оптимизированные запросы, а задача оптимизации - это не "пальцем в небо" и не "у меня высокая экспертиза, я могу написать", а банальный поиск оптимума... а в этом машина безусловно превосходит человека. Так что больше на "приколы для даунов" смахивает.
"Приколы для эффективных менеджеров"
И рекрутеров
Эм... Так то машина как раз ищет этот оптимум при составлении плана выполнения запроса, и если бы она "безусловно превосходила человека", то человек бы потом не занимался оптимизацией этого плана
ну так а машину, которая составляет план, кто пишет? А? А? Конечно, мы же помним про энтропию Шеннона - если человек созадет алгоритмическую машину, то именно он и вкладывает в нее информацию, поэтому машина на уровне "уметь все" человека не превосходит... но на уровне той алгоритмической задачи, которая ей поставлена, с учетмо кол-ва информации, заложенной программистом - в разы, в десятки раз, в сотни.
машина может тупо следовать инструкциям и иногда сама себя может перехитрить, особенно когда ей начинают сильно усложнять эти инструкции, этот поиск оптиума тоже пишется несовершенными людьми
приведу пример в 19ом оракле на основе сбора статистки по таблице оракл может перестраивать план запроса по щучьему велению
и когда в таблице 100 записей или пара миллионов это большая разница и этот перестроенный план может выстрелить в ногу
приходится хинтовать свои скрипты и прибивать свой план запроса гвоздями
приведу пример в 19ом оракле на основе сбора статистки по таблице оракл может перестраивать план запроса по щучьему велению
и когда в таблице 100 записей или пара миллионов это большая разница и этот перестроенный план может выстрелить в ногу
приходится хинтовать свои скрипты и прибивать свой план запроса гвоздями
Хаха, если бы.
Оптимизаторы нынче неплохи, но перестраивать целиком структуру запроса, что порой приводит к оптимизации порядков на 5, не умеет.
Как и анализировать не структуру, а непосредственно суть данных, чтобы поменять запрос, более оптимальный для конкретных данных именно вот в этой таблице именно сейчас.
Оптимизаторы нынче неплохи, но перестраивать целиком структуру запроса, что порой приводит к оптимизации порядков на 5, не умеет.
Как и анализировать не структуру, а непосредственно суть данных, чтобы поменять запрос, более оптимальный для конкретных данных именно вот в этой таблице именно сейчас.
мы же понимаем ,что в исходном "меме" ни слова про оптимизацию структуры запроса, а про "написание эффективного sql-запроса". Машина может написать "эффективный sql-запрос" просто потому что в принципе декларативный язык допускает оптимизаионный поиск.
А вы мне все пытаететсь рассказать про то как сейчас линейно устроена планирование запроса на уровне БД. Ну ок, так то еще в 60-х изобреталось :)
А вы мне все пытаететсь рассказать про то как сейчас линейно устроена планирование запроса на уровне БД. Ну ок, так то еще в 60-х изобреталось :)
Вопрос трудящимся, какой есть годный материал для вкуривания про оптимизацию с SQL? Базовое понимание того, как оно работает у меня есть, равно как и работаю с ним активно второй год. Но любой рекомендации буду рад
Вот это прям годнота
Охренеть, за 40 минут я понял больше чем за месяц гугления статеек
Это совсем для джунов
Иди в свой middle'овый двор выебывайся
use the index, Luke. Маркус Винрад очень доходчиво объясняет
Спасибо, да, индекс - хорошая вещь. Настолько, что у меня в базе есть таблица с парой миллионов строк и 50 столбцами, и на 80% она состоит из индексов. Прямые запросы к ней - ок бро, но стоит делать join‘ы с другой таблицей или, упаси боже, вставленные SELECT’ы в запросе/модификации - и оракл говорит: «я буду это делать 20 минут (хотя, стоимость исчисляет десятками тысяч операций, что по идее должно длиться секунды), за это время успеешь несколько раз сходить нахуй».
Разбирал по кирпичикам, проблема стреляет именно с join’ами
Разбирал по кирпичикам, проблема стреляет именно с join’ами
Не всегда решение в индексах или performance tuning'е самой бд, иногда приходится денормализировать таблицы или использовать clustered таблицы. От дисковой подсистемы опять же многое зависит. В идеале чтобы БД была на SSD и не на copy-on-write файловой системе.
Короче вопросы по БД это такая вещь где в общих чертах можно много чего посоветовать, но для дельных советов надо знать и структуру БД и запросы которые тормозят.
Короче вопросы по БД это такая вещь где в общих чертах можно много чего посоветовать, но для дельных советов надо знать и структуру БД и запросы которые тормозят.
Все это понимают, но на собесе тебя про грааль плана запросов и тот самый идеальный селект в HL системе будут спрашивать, который все за 1нс выдает. А ты на должность уборщика метил
Собесы это вообще отдельная боль. У тебя может быть проект на гитхабе с тысячей звезд, который о твоих способностях говорит больше, чем любые вопросы, но вместо того чтобы слегка отойти от стандартного процесса и зайти к тебе на гитхаб тебе все равно будут трахать мозг какими-то базовыми вопросами ответить на которые ты не можешь банально потому что либо делаешь это на подсознательном уровне, либо какими-то терминами за свою практику ты не пользовался даже если используешь это каждый день.
Хочется тебе дорогой выпивки купить! Ты заговорил и попал в самое сердце. Но с другой стороны это и кандидатов оберегает: либо у тебя прикольный коллектив, либо деревянные нёрды с блестяще вызубреннлй теорией и ебаным продуктом
Ты удивишься, но...
Например, в колоночной распределенной базе, обычный column scan работает чаще всего быстрее, чем индекс. О чём, впрочем, прямо написано в документации, и почему так - тоже.
Так что не бывает универсальных советов, тем более, что индексы ебать как не бесплатны, если у тебя данные насираются миллионами строк в минуту.
Например, в колоночной распределенной базе, обычный column scan работает чаще всего быстрее, чем индекс. О чём, впрочем, прямо написано в документации, и почему так - тоже.
Так что не бывает универсальных советов, тем более, что индексы ебать как не бесплатны, если у тебя данные насираются миллионами строк в минуту.
Годные материалы как правило пишутся под конкретную субд и выглядят в виде книг. Гугли Oracle/MSSQL perfomance tuning
Первым выдало годный курс. Охуенно (без иронии), спасибо
Не за что)
Так он и интересуется потому что не может и хочет чтобы ии писал запросы, машина быдляцкая
Select MyTable.dbo (mycolumn1, mycolumn2)
Ну на самом деле возможно уже и может: https://habr.com/ru/post/703380/
Напишу, может, и не самый эффективный, но уж точно эффективнее, чем его генерят некоторые фреймворки.
Первый раз в жизни, когда встретился с ORM запросом в логах, я немного испугался.
DROP DATABASE Ahuennayabase
Чтобы написать коммент, необходимо залогиниться