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 performance api to access query methods with measuring of the execution time:
.performance.many()
.performance.one()
.performance.oneOrFail()
.performance.exists()
.performance.paginate()
.performance.exists()
Each method returns an object with data
(the result) and time
(the duration).
const users = await User.query().performance.many();
console.log(users.data); // query result
console.log(users.time); // execution time in ms
const user = await User.query().performance.one();
console.log(user.data); // single user
console.log(user.time); // execution time in ms
const paginated = await User.query().performance.paginate(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