Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Une commande directe contourne le prompt de vérification. Examinez la source avant de l'exécuter.
Database design, optimization, and caching strategies for SQL, NoSQL, and Redis
sasmp_version
1.3.0
bonded_agent
03-database-performance
bond_type
PRIMARY_BOND
atomic_design
{"single_responsibility":"Database optimization and caching patterns","boundaries":{"includes":["sql_optimization","nosql_patterns","redis_caching","connection_pooling","indexing"],"excludes":["api_design","business_logic","infrastructure"]}}
Optimize database operations with proven patterns for SQL, NoSQL, and caching.
SQL Optimization
Indexing Strategy
-- B-tree index (default, equality + range)CREATE INDEX idx_users_email ON users(email);
-- Composite index (order matters!)CREATE INDEX idx_orders_user_date ON orders(user_id, created_at DESC);
-- Partial index (filter common queries)CREATE INDEX idx_active_users ON users(email) WHERE status ='active';
-- Covering index (avoid table lookup)CREATE INDEX idx_orders_covering ON orders(user_id) INCLUDE (total, status);
N+1 Query Prevention
// BAD: N+1 queriesconst users = await db.query('SELECT * FROM users');
for (const user of users) {
user.orders = await db.query(
'SELECT * FROM orders WHERE user_id = ?',
[user.id]
);
}
// GOOD: Single query with JOINconst usersWithOrders = await db.query(`
SELECT u.*, json_agg(o.*) as orders
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id
`);
// GOOD: DataLoader patternconst orderLoader = newDataLoader(async (userIds) => {
orders = db.(
,
[userIds]
);
userIds.( orders.( o. === id));
});
const
await
query
'SELECT * FROM orders WHERE user_id = ANY($1)'
return
map
id =>
filter
o =>
user_id
Connection Pooling
import { Pool } from'pg';
const pool = newPool({
host: process.env.DB_HOST,
database: process.env.DB_NAME,
max: 20, // Max connectionsmin: 5, // Min connectionsidleTimeoutMillis: 30000, // Close idle after 30sconnectionTimeoutMillis: 5000,
acquireTimeoutMillis: 10000,
});
// Monitor pool health
pool.on('error', (err, client) => {
console.error('Unexpected pool error', err);
});
// Query with automatic releaseasyncfunctionquery(sql, params) {
const client = await pool.connect();
try {
returnawait client.query(sql, params);
} finally {
client.release();
}
}