Skip to content

Commit a701900

Browse files
committed
OpenConceptLab/ocl_issues#1035 Slow concepts and mappings select (partial index)
1 parent 1322a2e commit a701900

File tree

4 files changed

+50
-3
lines changed

4 files changed

+50
-3
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Generated by Django 3.2.7 on 2021-10-12 13:33
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('concepts', '0021_auto_20211012_1107'),
10+
]
11+
12+
operations = [
13+
migrations.RemoveIndex(
14+
model_name='concept',
15+
name='concepts_is_acti_ec40a2_idx',
16+
),
17+
migrations.AddIndex(
18+
model_name='concept',
19+
index=models.Index(condition=models.Q(('is_active', True), ('retired', False), ('is_latest_version', True), models.Q(('public_access', 'None'), _negated=True)), fields=['-updated_at'], name='concepts_updated_6490d8_idx'),
20+
),
21+
]

core/concepts/models.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from django.core.exceptions import ValidationError
33
from django.core.validators import RegexValidator
44
from django.db import models, IntegrityError, transaction, connection
5-
from django.db.models import F
5+
from django.db.models import F, Q
66
from pydash import get, compact
77

88
from core.common.constants import ISO_639_1, INCLUDE_RETIRED_PARAM, LATEST, HEAD
@@ -143,7 +143,9 @@ class Meta:
143143
db_table = 'concepts'
144144
unique_together = ('mnemonic', 'version', 'parent')
145145
indexes = [
146-
models.Index(fields=['is_active', 'retired', 'is_latest_version', 'public_access', '-updated_at']),
146+
models.Index(name='concepts_updated_6490d8_idx', fields=['-updated_at'],
147+
condition=(Q(is_active=True) & Q(retired=False) & Q(is_latest_version=True) &
148+
~Q(public_access='None'))),
147149
] + VersionedModel.Meta.indexes
148150

149151
external_id = models.TextField(null=True, blank=True)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Generated by Django 3.2.7 on 2021-10-12 13:36
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('mappings', '0022_auto_20211012_1107'),
10+
]
11+
12+
operations = [
13+
migrations.RemoveIndex(
14+
model_name='mapping',
15+
name='mappings_is_acti_3af71d_idx',
16+
),
17+
migrations.AddIndex(
18+
model_name='mapping',
19+
index=models.Index(condition=models.Q(('is_active', True), ('retired', False), ('is_latest_version', True), models.Q(('public_access', 'None'), _negated=True)), fields=['-updated_at'], name='mappings_updated_4589ad_idx'),
20+
),
21+
]

core/mappings/models.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from django.core.exceptions import ValidationError
44
from django.core.validators import RegexValidator
55
from django.db import models, IntegrityError, transaction
6+
from django.db.models import Q
67
from pydash import get, compact
78

89
from core.common.constants import INCLUDE_RETIRED_PARAM, NAMESPACE_REGEX, HEAD, LATEST
@@ -21,7 +22,9 @@ class Meta:
2122
db_table = 'mappings'
2223
unique_together = ('mnemonic', 'version', 'parent')
2324
indexes = [
24-
models.Index(fields=['is_active', 'retired', 'is_latest_version', 'public_access', '-updated_at']),
25+
models.Index(name='mappings_updated_4589ad_idx', fields=['-updated_at'],
26+
condition=(Q(is_active=True) & Q(retired=False) & Q(is_latest_version=True) &
27+
~Q(public_access='None'))),
2528
] + VersionedModel.Meta.indexes
2629

2730
parent = models.ForeignKey('sources.Source', related_name='mappings_set', on_delete=models.CASCADE)

0 commit comments

Comments
 (0)