CTE, представления, табличные переменные, временные переменные - что выбрать

Поділитися
Вставка
  • Опубліковано 1 гру 2024

КОМЕНТАРІ • 20

  • @Денис-д1у2д
    @Денис-д1у2д 3 роки тому +6

    Супер! Спасибо большое, Михаил!

  • @viktorgladkih8048
    @viktorgladkih8048 3 роки тому +5

    Круто. Спасибо :))

  • @reflex5989
    @reflex5989 8 днів тому +1

    cte еще для рекурсий классно

  • @crackcoder651
    @crackcoder651 3 роки тому +2

    Как панель задач такую же сделать?

  • @leonardt1798
    @leonardt1798 3 роки тому +3

    Сорян, всё круто, но я сейчас посмотрел видос, что процедуры зло и нельзя мешать логику с данными (что конечно же звучит логично) и у меня вопрос ))
    Что считать логикой, а что простой выборкой, временные таблицы это логика или же нет?
    Просто так совпало, что я использую процедуры на стороне БД и поступила команда от них избавиться и у меня дилемма, что писать в коде, а что оставить в sql.
    Спасибо)

    • @Dev-lessons
      @Dev-lessons  3 роки тому +1

      Я предпочитаю в SQL делать только выборку и там использовать только чистый SQL и минимум хранимых процедур. Идеал - вообще ни одной хранимой процедуры или функции, только SELECT, но к такому сложно прийти. Всегда что-то будет на сервере. А вот что оставлять, тут каждый случай решается в отдельности.

    • @leonardt1798
      @leonardt1798 3 роки тому +1

      @@Dev-lessons опять все переписывать )), хорошо, Спасибо )

  • @alexandershcherbak4183
    @alexandershcherbak4183 3 роки тому +4

    0

  • @IgorGallemar
    @IgorGallemar 3 роки тому +3

    Первый!!!!

  • @JohnDoe-tm1rv
    @JohnDoe-tm1rv 3 роки тому +2

    View в базе данных, как и триггеры - это прямой путь в сумашедший дом в будущем, потому что потом совершенно невозможно понять что происходит с базой.

    • @Dev-lessons
      @Dev-lessons  3 роки тому

      Может, если вывести все это из под контроля и слишком много создавать представлений

    • @JohnDoe-tm1rv
      @JohnDoe-tm1rv 3 роки тому +1

      @@Dev-lessons Дело в реализации в конкоетгых серверах, оптимизация плана выполнения запроса между джоиными View работает гораздо хуже чем просто на таблицах. Если у тебя медленно работает запрос с использованиес пары тройки View то у тебя просто оуки связаны для его оптимизации. Вью еще так сяк можно для секюрити использовать, чтобы фитьтровать стрлчки данных и давать только выбранные столбцы, потому что на View можно давать права другие чем на таблицы. Для всего остального категорически не рекомендую использовать

    • @ivanshipilov4265
      @ivanshipilov4265 3 роки тому

      Ну не всегда. Тут зависит от реализации и того для чего это в конечном итоге было нужно. например партиционирование без триггеров реализовать почти не реально, а без View тоже достаточно не просто обойтись если ты работаешь с чем-то вроде бухгалтерских программ, отчетов или аналитики, для последней особенно. Аналитика достаточно сильно грузит базу. Она запускает аггрегирование и /или фулскан всего и блокирует на запись чтение. Поэтому для таких ситуаций часто держат либо отдельную реплику под аналитику либо создают materilizes view. Раз у так вышло что у нас аналитика берется с SQL а не с ClickHouse. А чтобы не путаться приходится хранить в других схемах.... (

  • @ДискотрактористПетрович

    если у вас есть жирная тугая вьюха, и вы собираетесь ее фильтровать, то советую загнуть ее сперва целиком во времянку, а уже потом писать на нее where. скорострельность вас приятно удивит

    • @Dev-lessons
      @Dev-lessons  6 місяців тому

      Скорострельность - это скорость выполнения запроса? Я не знаю, как другие базы данных, но MS SQL Server оптимизатор не смотрит на то, что он выполняет View или SQL без представления. Ни разу не видел разницы.

    • @ДискотрактористПетрович
      @ДискотрактористПетрович 6 місяців тому

      @@Dev-lessons я точно говорю, что из сложной вью гораздо дольше селектит где несколько where или джоинов, чем из времянки от этой вью