Performance Optimization¶
Tips and techniques for optimizing SurrealEngine applications.
For examples, see: example_scripts/test_performance_optimizations.py
Indexing¶
Add indexes to frequently queried fields:
class User(Document):
email = StringField(indexed=True, unique=True)
status = StringField(indexed=True)
class Meta:
indexes = [
{"fields": ["created_at"]},
{"fields": ["status", "created_at"]}
]
Connection Pooling¶
connection = create_connection(
url="ws://localhost:8000/rpc",
use_pool=True,
pool_size=20,
pool_max_idle=300
)
Query Optimization¶
# Use omit() to exclude fields
users = await User.objects.omit("large_field").all()
# Use explain() to analyze
plan = await User.objects.filter(status="active").explain()
# Limit results
users = await User.objects.limit(100)
Batch Operations¶
# Batch create
for user in users:
await user.save()
# Batch update
await User.objects.filter(status="pending").update(status="active")
For more optimization techniques, see Querying and the performance examples.