Some people, maybe you, have been confusing the updates that allow you to more easily manipulate jsonb data values, including being able to change values inside of them easily with SQL, with the ability to do in-place updates of parts of the field in the database. If you have a field in a row that is over the database page size (something around 8kB), it will get compressed to TOAST, and in any case any change to the content of that field will rewrite the row. If you have a field that is even megabytes large, much less a gigabyte large, that you are intending to update, you are in for a world of hurt. You also will not be able to index <i>inside</i> the value if you do this: usually you want to be able to efficiently say &quot;I want parts of my tree that look liked this&quot;; PostgreSQL is not going to be able to provide you any help, and is only going to be able to use an index to know &quot;ok, your megatree row might match your query&quot;, and then it will have to load the entire value into memory so it can manipulate it with SQL and possibly return a sub-result.