Performance: Why database access matters
Database access affects page load speed by delaying server response and can block rendering of dynamic content.
Jump into concepts and practice - no test required
import { cache } from 'react'; const getUser = cache(async () => { return await db.query('SELECT * FROM users WHERE id = 1'); }); export default async function Page() { const user = await getUser(); return <div>{user.name}</div>; }
export default async function Page() { const user = await db.query('SELECT * FROM users WHERE id = 1'); return <div>{user.name}</div>; }
| Pattern | DB Calls | Server Response Delay | LCP Impact | Verdict |
|---|---|---|---|---|
| Direct DB call on every request | Many | High (200-500ms) | High delay | [X] Bad |
| Cached DB call with batching | Few | Low (<100ms) | Minimal delay | [OK] Good |
import { db } from '@/lib/db';
export default async function Page() {
const users = await db.user.findMany();
return (
<ul>
{users.map(user => <li key={user.id}>{user.name}</li>)}
</ul>
);
}export default function handler(req, res) {
const users = db.user.findMany();
res.status(200).json(users);
}Option A:
const posts = await db.post.findMany({ include: { author: true } });
return posts.map(p => <div key={p.id}>{p.title} by {p.author.name}</div>);
Option B:
const posts = await db.post.findMany();
const authors = await db.user.findMany();
return posts.map(p => <div key={p.id}>{p.title} by {authors.find(a => a.id === p.authorId).name}</div>);
Option C:
Fetch posts on client side and authors on server side separately.
Option D:
Render posts without author names to speed up loading.