Hello! Welcome to the next lesson in our course on mastering Notion for businesses.
In our last session, we put on our detective hats and learned how to analyze a Notion system to diagnose performance bottlenecks. You now have a framework for identifying the culprits behind a slow workspace, such as complex rollup chains and bloated dashboards.
Today, we transition from diagnosis to treatment. Knowing what's wrong is half the battle; implementing the right architectural patterns to fix it is the other half. This lesson will equip you with two powerful optimization techniques that not only solve existing performance issues but also help you build scalable, high-performance systems from the start.
Our learning outcome is to implement optimization patterns such as "lazy loading" with linked databases and view-based template design.
The Principle of "Lazy Loading": Only Load What You Need
In the previous lesson, we saw how dashboards cluttered with multiple inline databases can cripple performance. This happens because Notion tries to load all the data from all those databases simultaneously. The solution is a strategic principle we can borrow from software development: lazy loading.
In the context of Notion, lazy loading means structuring your pages so they only load the absolute minimum data required at any given moment. This makes pages feel faster and more responsive, especially in large, complex workspaces. Let's look at a few ways to implement this.
Strategy 1: Consolidate Views into a Single Linked Database Block
Instead of placing several separate linked databases on a dashboard, a more performant approach is to use a single linked database block with multiple views, which appear as tabs.
Why is this better? Notion only loads the data for the active view (tab). When you switch to another tab, it then loads the data for that view. This prevents the initial, heavy data-loading that bogs down a page.
Notion's own performance guide recommends this exact strategy.
Optimize database load times & performance
This official Notion help article explains why using a single linked database with multiple views is a best practice for performance. It's a quick but important read to solidify the 'why' behind this pattern.
Please read the first subsection, titled 'Avoid building too many databases into high-traffic pages'. Focus on the recommended solution of using a single linked database block with different views pointing to your source databases.
Strategy 2: Limit the Initial Data Load
For databases with thousands of entries (like a master task list), even a single view can be slow if it tries to display everything at once. Notion has a built-in feature to control this.
Every database view has a "Load limit" option. By default, it might be set to 50 or 100 pages. This means Notion only loads that initial number of items. As you scroll, it loads more. For most views, the default is fine, but for very large databases on critical dashboards, you could consider setting this to a smaller number (e.g., 25) to ensure the initial page load is as fast as possible.
The Ultimate Optimization Pattern: View-Based Template Design
The lazy loading strategies above are effective, but manually setting them up for every new project, client, or team member doesn't scale. As a consultant building systems, you need a way to automate the creation of these optimized, context-specific views.
This is where view-based template design, also known as self-referential filtering, comes in. This is arguably one of the most important architectural patterns for building truly scalable Notion systems.
The core idea is to create a database template that contains a pre-configured, filtered linked view of another database. When a new page is created from this template, the filter automatically adapts to the new page.
Let's watch a detailed walkthrough of how this works.
Master 80% of Notion with this ONE Feature
Jeff Su provides an excellent, clear demonstration of this pattern. He starts by showing the problem (jumbled, irrelevant data) and then walks through the solution. This video will make the concept concrete.
Please watch from 05:25 to 10:04. The first part (starting at 05:25) shows the 'manual way' of creating a filtered linked view. The second, more important part (starting at 07:53) demonstrates the 'automated way' using a self-filtering template. Pay close attention to how he filters the linked view inside the template by the template's own name.
Deconstructing the Self-Referential Filter
Let's break down the process you just saw in the video. Using the classic Projects and Tasks example:
- Establish the Relation: You must have a
Relationproperty connecting the two databases (e.g.,ProjectsandTasks). - Create a Template: In the
Projectsdatabase, you create a new template (let's call it "New Project Template"). - Add a Linked View: Inside the body of the "New Project Template" page, you add a linked view of the
Tasksdatabase. - Apply the Magic Filter: You create a filter on this
Tasksview. The filter rule is:Project(the relation property)ContainsNew Project Template(the name of the template page you are currently editing). - Set as Default (Optional but Recommended): You can set this template as the default for the
Projectsdatabase, so every new project automatically uses this structure.
Now, when a user creates a new project named "Client Website Redesign," Notion automatically creates a Tasks view inside that page that is already filtered to show only tasks related to "Client Website Redesign." It's an elegant, scalable solution.
For a textual reference that you can review, the following article provides a step-by-step guide.
Notion Linked Databases & Self-Referential Filtering
This article provides a written guide to the same self-referential filtering technique. It's a great resource to bookmark for future reference.
Please read the section titled 'Self-referential filtering in Notion'. It walks through the same Project/Task example and clearly shows the filter setup with screenshots.
Test your understanding!
You are building a scalable CRM for a client. You have a Companies database and an Interactions database (for logging meetings, calls, etc.), which are related to each other.
Describe the steps you would take to create a template in the Companies database so that every new company page automatically includes a list of only its related interactions.
Show answer
- In the
Companiesdatabase, click the dropdown arrow next to the "New" button and select "+ New template". Name it "New Company Template". - Inside the body of this template page, type
/linkedand create a linked view of theInteractionsdatabase. - Click the
Filterbutton on this new linked view. - Set the filter rule to be:
Company(the relation property pointing to the Companies DB)ContainsNew Company Template. - Save the template. Now, whenever a new company is created using this template, it will have a perfectly filtered list of its interactions.
Conclusion
You've now moved from simply identifying performance problems to actively implementing architectural solutions. By mastering these optimization patterns, you can build Notion systems that are not only powerful but also fast, scalable, and intuitive for the end-user.
Key Takeaways:
- Lazy Loading: This is the core principle of only loading data when it's needed. It's implemented in Notion by consolidating views into tabs and using the "Load limit" setting.
- View-Based Template Design (Self-Referential Filtering): This is the ultimate pattern for scalability. It automates the creation of context-specific, "lazy-loaded" views for every new item in a database (like a project or client).
- From Problem to Pattern: The "bloated dashboard" problem from our last lesson is solved by lazy loading. The challenge of creating context-specific views at scale is solved by view-based template design.
In our next lesson, we'll address another critical aspect of system maintenance and performance: data lifecycle management. Now that we know how to optimize our active data, what do we do with old, inactive data? We will design and implement a data archiving workflow that preserves relational integrity, ensuring your client's workspace remains lean and relevant over time.