Skip to content

Commit 106a414

Browse files
committed
#398 Added similar queries count
1 parent c69114a commit 106a414

File tree

5 files changed

+30
-0
lines changed

5 files changed

+30
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Generated by Django 3.1 on 2020-08-21 19:47
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('silk', '0007_sqlquery_identifier'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='sqlquery',
15+
name='query_structure',
16+
field=models.TextField(default=''),
17+
preserve_default=False,
18+
),
19+
]

silk/models.py

+1
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ def bulk_create(self, *args, **kwargs):
232232

233233
class SQLQuery(models.Model):
234234
query = TextField()
235+
query_structure = TextField()
235236
start_time = DateTimeField(null=True, blank=True, default=timezone.now)
236237
end_time = DateTimeField(null=True, blank=True)
237238
time_taken = FloatField(blank=True, null=True)

silk/sql.py

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ def execute_sql(self, *args, **kwargs):
4141
if _should_wrap(sql_query):
4242
query_dict = {
4343
'query': sql_query,
44+
'query_structure': q,
4445
'start_time': timezone.now(),
4546
'traceback': tb
4647
}

silk/templates/silk/sql.html

+2
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@
108108
<th class="left-aligned">Tables</th>
109109
<th class="right-aligned">Num. Joins</th>
110110
<th class="right-aligned">Execution Time (ms)</th>
111+
<th class="right-aligned">Num. Duplicates</th>
111112
</tr>
112113
{% for sql_query in items %}
113114
<!-- TODO: Pretty grimy... -->
@@ -124,6 +125,7 @@
124125
<td class="left-aligned">{{ sql_query.tables_involved|join:", " }}</td>
125126
<td class="right-aligned">{{ sql_query.num_joins }}</td>
126127
<td class="right-aligned">{{ sql_query.time_taken | floatformat:6 }}</td>
128+
<td class="right-aligned">{{ sql_query.num_duplicate }}</td>
127129
</tr>
128130
{% endfor %}
129131

silk/views/sql.py

+7
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,15 @@ def get(self, request, *_, **kwargs):
2121
if request_id:
2222
silk_request = Request.objects.get(id=request_id)
2323
query_set = SQLQuery.objects.filter(request=silk_request).order_by('-start_time')
24+
query_structure_count = {}
2425
for q in query_set:
2526
q.start_time_relative = q.start_time - silk_request.start_time
27+
if q.query_structure not in query_structure_count:
28+
query_structure_count[q.query_structure] = -1
29+
query_structure_count[q.query_structure] += 1
30+
for q in query_set:
31+
q.num_duplicate = query_structure_count[q.query_structure]
32+
2633
page = _page(request, query_set)
2734
context['silk_request'] = silk_request
2835
if profile_id:

0 commit comments

Comments
 (0)