Skip to content

Commit bc1289c

Browse files
perf(audio_cli): optimize audio stats queries with unified aggregation
Consolidated three separate full-table scanning SQLite queries (Total Files, Duration Stats, and Recent Activity) in `audio_cli.py` into a single, optimized query using `COALESCE` and conditional aggregation. This eliminates redundant database round-trips and full table scans during CLI reporting. Co-authored-by: thebearwithabite <216692431+thebearwithabite@users.noreply.github.com>
1 parent 613e4ba commit bc1289c

1 file changed

Lines changed: 15 additions & 19 deletions

File tree

audio_cli.py

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -203,9 +203,21 @@ def show_audio_stats():
203203
import sqlite3
204204

205205
with sqlite3.connect(analyzer.db_path) as conn:
206-
# Total files analyzed
207-
cursor = conn.execute("SELECT COUNT(*) FROM audio_analysis")
208-
total_files = cursor.fetchone()[0]
206+
# Combined stats query (total, duration, recent activity) to prevent N+1 full table scans
207+
cursor = conn.execute("""
208+
SELECT
209+
COUNT(*),
210+
COALESCE(AVG(duration_seconds), 0),
211+
COALESCE(MIN(duration_seconds), 0),
212+
COALESCE(MAX(duration_seconds), 0),
213+
COALESCE(SUM(duration_seconds), 0),
214+
COALESCE(SUM(CASE WHEN analyzed_date > datetime('now', '-7 days') THEN 1 ELSE 0 END), 0)
215+
FROM audio_analysis
216+
""")
217+
stats = cursor.fetchone()
218+
total_files = stats[0]
219+
duration_stats = (stats[1], stats[2], stats[3], stats[4])
220+
recent_count = stats[5]
209221

210222
if total_files == 0:
211223
print("❌ No audio files analyzed yet")
@@ -243,16 +255,6 @@ def show_audio_stats():
243255
print(f" {quality}: {count} ({percentage:.1f}%)")
244256

245257
# Duration stats
246-
cursor = conn.execute("""
247-
SELECT
248-
AVG(duration_seconds) as avg_duration,
249-
MIN(duration_seconds) as min_duration,
250-
MAX(duration_seconds) as max_duration,
251-
SUM(duration_seconds) as total_duration
252-
FROM audio_analysis
253-
""")
254-
duration_stats = cursor.fetchone()
255-
256258
print(f"\n⏱️ Duration Statistics:")
257259
print(f" Average: {duration_stats[0]/60:.1f} minutes")
258260
print(f" Shortest: {duration_stats[1]:.1f} seconds")
@@ -275,12 +277,6 @@ def show_audio_stats():
275277
print(f" {project}: {count} files")
276278

277279
# Recent activity
278-
cursor = conn.execute("""
279-
SELECT COUNT(*) FROM audio_analysis
280-
WHERE analyzed_date > datetime('now', '-7 days')
281-
""")
282-
recent_count = cursor.fetchone()[0]
283-
284280
print(f"\n📅 Recent Activity:")
285281
print(f" Files analyzed in last 7 days: {recent_count}")
286282

0 commit comments

Comments
 (0)