Use generated columns to perform queries with formulas in a scalable way

Поделиться
HTML-код
  • Опубликовано: 5 авг 2024
  • Generated columns allow us to calculate a column based on other columns to create a new column for a table. They also allow us to index based on the column, which allows us to scale any query involving the column.
    Often, queries involving complex formulas do not scale, but generated columns allow us to do so by allowing us to index the column. This can be used for financial analysis, sorting by profit margins, and many other applications. It also allows us to display latitude and longitude from PostGIS types, which works great in combination with Supabase realtime.
    In this video, / dshukertjr explains how to create a generated column, how to use the generated column to run queries with complex mathematical formulas efficiently, and how to use the generated column in combination with Supabase realtime to display PostGIS data in the app.
    Chapters
    00:00 Intro
    00:21 Explaining the scalability issue with formulas in a query
    01:16 Using generated columns to solve the scalability issue
    04:09 Using Supabase realtime and PostGIS with generated columns
    06:30 Outro
    💻 Videos to watch next:
    ▶ • Make your queries 43,2...
    ▶ • Getting started with P...
    ▶ • How to store and query...
    👇 Learn more about Supabase 👇
    🕸 Website: supabase.com/
    🏁 Get started: app.supabase.com/
    📄 Docs: supabase.com/docs
    🔔 Subscribe for more tutorials and feature updates from Supabase: / @supabase
    📱 Connect with Us:
    🐙 Github: www.github.com/supabase
    💬 Discord: www.discord.supabase.com/
    🐦 Twitter: / supabase
    ▶ Instagram (follow for memes): / supabasecom
    ABOUT SUPABASE:
    Supabase is the open source Firebase alternative. Supabase provides a full Postgres database for every project with pgvector, backups, realtime, and more. Add and manage email and password, passwordless, OAuth, and mobile logins to your project through a suite of identity providers and APIs.
    Build in a weekend, scale to millions.
    #Supabase #AppDevelopment #RealtimeApps #DeveloperTools
  • НаукаНаука

Комментарии • 36

  • @dshukertjr
    @dshukertjr Месяц назад +11

    We are working on series of Postgres videos on this channel right now! What other Postgres concepts would you like us to cover? Let us know in the comments blow 👇

    • @DinoRossYT
      @DinoRossYT Месяц назад +1

      More computing actions scenarios data oriented so we can take advantage of backend all-in-one 🙏

  • @Hagemony
    @Hagemony 23 дня назад +1

    I think people should explore more on postgres powers not just storing data, thanks for this

  • @loucasi
    @loucasi 19 дней назад

    Amazing presenters of Supabase very informative videos!
    Would you PLEASE make a video explaining best practices for handling time + timezones in & out of Supabase ?
    If you could add some specifics regarding Flutterflow and how it handles the issue - and how the two could come together - apart from helping my particular non coder situation could be the ONE video on the internet that shows best practices and rules to handle the "time" issue once and for all.
    PLEASE! 🤞 😅 🤕

  • @powertipsweb
    @powertipsweb Месяц назад +3

    Awesome, thank you for the quality content and great service you provide.❤

  • @brotherly9058
    @brotherly9058 Месяц назад +3

    Thanks very much for this!!!!❤❤

    • @dshukertjr
      @dshukertjr Месяц назад +1

      Glad you liked it!

  • @mrrolandlawrence
    @mrrolandlawrence Месяц назад +2

    persistant computed columns are awesome.

  • @Yusuf-ok5rk
    @Yusuf-ok5rk Месяц назад +1

    hey these new videos of yours are pretty good. keep up the good work. Oh also imo you should add your name + any other person that worked in the video in description.

    • @dshukertjr
      @dshukertjr Месяц назад +1

      Great suggestion! Let me add it in!

  • @jaguarconsultoriadigital8147
    @jaguarconsultoriadigital8147 Месяц назад +3

    Thanks very much.

    • @dshukertjr
      @dshukertjr Месяц назад

      Glad to hear you liked it!

  • @thibaultbarolat-massole7190
    @thibaultbarolat-massole7190 Месяц назад +6

    Great. Does it work with jsonb column?

    • @dshukertjr
      @dshukertjr Месяц назад

      Yup, that is another awesome use case. You could extract certain values from jsonb columns as a generated column, or you could construct jsonb columns using other columns.

  • @luisandrade1291
    @luisandrade1291 Месяц назад +5

    I wish you had shown the execution time of the before and after.

    • @dshukertjr
      @dshukertjr Месяц назад +1

      I only had 1000 rows in this particular example, but yes, I should have prepared enough sample data so that I could demonstrate the execution time difference. Trust me though, querying millions of rows with this formula in the query will take a very long time without using a generated column!

    • @brotherly9058
      @brotherly9058 Месяц назад

      @@dshukertjr Using formula took me very long time to run query and very hard to maintain. I wish i knew this 3 years ago

  • @shmuel-k
    @shmuel-k Месяц назад +2

    Geberated columns are only able to access data from the current row. So you can't use them for rollup fields or to reference another table. If you need data from another table, you're back to triggers, functions, and views

    • @dshukertjr
      @dshukertjr Месяц назад

      Yup, views are awesome!

  • @fawazjoseph878
    @fawazjoseph878 Месяц назад +3

    Awesome feature 👏🏿🙌🏿
    Can you create a generated column using the supabase ui column editor

    • @dshukertjr
      @dshukertjr Месяц назад

      It's not quite yet supported, but hopefully in the future!

  • @akshykhade
    @akshykhade Месяц назад +11

    i wasted so much time with triggers and functions for small tasks like this

  • @ubitubee
    @ubitubee Месяц назад +1

    do one on different type of indexes and approximate string / natural language search

    • @dshukertjr
      @dshukertjr Месяц назад +1

      Awesome suggestion! Will definitely cover the topic in the future!

  • @champechilufya1458
    @champechilufya1458 Месяц назад +1

    Is this new or has it always been there? I think computed columns might have always been a postgres thing, but this allows me to generate unique compound ids, which i can use in conflict upsert type queries. Glad i clicked

    • @dshukertjr
      @dshukertjr Месяц назад

      It's relatively new as it was only introduced in Posgres 12, which was released in 2019.

  • @ubitubee
    @ubitubee Месяц назад +1

    is there a difference, performance-wise, between this method and making functions with triggers?

    • @dshukertjr
      @dshukertjr Месяц назад +1

      Performance-wise probably not. At least nothing significant.

  • @brotherly9058
    @brotherly9058 Месяц назад

    How can we alter that column formula?

    • @Supabase
      @Supabase  Месяц назад +1

      You can drop the existing column and add a new one with the same name in a transaction!

  • @DinoRossYT
    @DinoRossYT Месяц назад +1

    So not trigger or functions anymore? 😅

    • @dshukertjr
      @dshukertjr Месяц назад +1

      If your use case can be done using generated column, you probably should use generated columns, but triggers have more capabilities than generated column such as reaching out to other tables. So the answer is "it depends"!

    • @DinoRossYT
      @DinoRossYT Месяц назад

      @@dshukertjr always on point, great example u made here 🙏