mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-12-16 19:46:48 +01:00
feat(db): Add performance indexes for DeletionRequest model
- Add composite index (user, status, created_at) for listing queries - Add index for reviewed_at field for filtering reviewed requests - Add index for completed_at field for filtering completed requests - Create migration 1076_add_deletionrequest_performance_indexes - Expected improvement: list queries <100ms, filter queries <50ms Addresses: [AI Scanner] Índices de Performance para DeletionRequest Epic: Migraciones de Base de Datos Co-authored-by: dawnsystem <42047891+dawnsystem@users.noreply.github.com>
This commit is contained in:
parent
fe679ed6d4
commit
b16394fdbb
2 changed files with 62 additions and 0 deletions
|
|
@ -0,0 +1,55 @@
|
|||
# Generated manually for DeletionRequest performance optimization
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
"""
|
||||
Add performance indexes for DeletionRequest model.
|
||||
|
||||
These indexes optimize common query patterns:
|
||||
- Filtering by user + status + created_at (most common listing query)
|
||||
- Filtering by reviewed_at (for finding reviewed requests)
|
||||
- Filtering by completed_at (for finding completed requests)
|
||||
|
||||
Expected performance improvement:
|
||||
- List queries: <100ms
|
||||
- Filter queries: <50ms
|
||||
|
||||
Addresses Issue: [AI Scanner] Índices de Performance para DeletionRequest
|
||||
Epic: Migraciones de Base de Datos
|
||||
"""
|
||||
|
||||
dependencies = [
|
||||
("documents", "1075_add_performance_indexes"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
# Composite index for user + status + created_at (most common query pattern)
|
||||
# This supports queries like: DeletionRequest.objects.filter(user=user, status='pending').order_by('-created_at')
|
||||
migrations.AddIndex(
|
||||
model_name="deletionrequest",
|
||||
index=models.Index(
|
||||
fields=["user", "status", "created_at"],
|
||||
name="delreq_user_status_created_idx",
|
||||
),
|
||||
),
|
||||
# Index for reviewed_at (for filtering reviewed requests)
|
||||
# Supports queries like: DeletionRequest.objects.filter(reviewed_at__isnull=False)
|
||||
migrations.AddIndex(
|
||||
model_name="deletionrequest",
|
||||
index=models.Index(
|
||||
fields=["reviewed_at"],
|
||||
name="delreq_reviewed_at_idx",
|
||||
),
|
||||
),
|
||||
# Index for completed_at (for filtering completed requests)
|
||||
# Supports queries like: DeletionRequest.objects.filter(completed_at__isnull=False)
|
||||
migrations.AddIndex(
|
||||
model_name="deletionrequest",
|
||||
index=models.Index(
|
||||
fields=["completed_at"],
|
||||
name="delreq_completed_at_idx",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -1670,6 +1670,13 @@ class DeletionRequest(models.Model):
|
|||
verbose_name = _("deletion request")
|
||||
verbose_name_plural = _("deletion requests")
|
||||
indexes = [
|
||||
# Composite index for common listing queries (by user, filtered by status, sorted by date)
|
||||
models.Index(fields=['user', 'status', 'created_at'], name='delreq_user_status_created_idx'),
|
||||
# Index for queries filtering by review date
|
||||
models.Index(fields=['reviewed_at'], name='delreq_reviewed_at_idx'),
|
||||
# Index for queries filtering by completion date
|
||||
models.Index(fields=['completed_at'], name='delreq_completed_at_idx'),
|
||||
# Legacy indexes kept for backward compatibility
|
||||
models.Index(fields=['status', 'user']),
|
||||
models.Index(fields=['created_at']),
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue