Performance
Hysteria ORM is designed for high performance. Here are some tips:
Connection Pooling
- SQL and MongoDB connections use pooling by default (driver-dependent).
- Use
sql.connect()
andmongo.connect()
for singleton connections.
Query Optimization
- Use
.select()
to limit columns. - Use
.paginate()
for large datasets. - Use
withPerformance()
utility to measure query times:
import { withPerformance } from 'hysteria-orm';
const [ms, users] = await withPerformance(() => User.query().many());
console.log(`Query took ${ms}ms`);
Built-in Query Performance Methods
Hysteria ORM provides built-in methods to measure the execution time of queries directly:
.manyWithPerformance()
.oneWithPerformance()
.oneOrFailWithPerformance()
.existsWithPerformance()
.paginateWithPerformance()
Each method returns an object with data
(the result) and time
(the duration).
const users = await User.query().manyWithPerformance();
console.log(users.data); // query result
console.log(users.time); // execution time in ms
const user = await User.query().oneWithPerformance();
console.log(user.data); // single user
console.log(user.time); // execution time in ms
const paginated = await User.query().paginateWithPerformance(1, 10);
console.log(paginated.data); // paginated result
console.log(paginated.time); // execution time in ms
Logging
- Enable query logging with
DB_LOGS=true
orlogs: true
in connection options.
Next: Logging