Skip to main content

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() and mongo.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 or logs: true in connection options.

Next: Logging