heatmap / backend /optimize_db.py
Ndg07's picture
Feat: 24-hour cleanup for local SQLite
c293f7c
#!/usr/bin/env python3
"""
Database optimization script - Add indexes for better performance
"""
import sqlite3
import os
from pathlib import Path
def optimize_database():
"""Add indexes to improve query performance"""
# Get database path
data_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'data')
db_path = os.path.join(data_dir, 'enhanced_fake_news.db')
if not os.path.exists(db_path):
print("Database not found!")
return
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
try:
print("πŸ”§ Optimizing database performance...")
# Add indexes for common queries
indexes = [
"CREATE INDEX IF NOT EXISTS idx_events_state ON events(state)",
"CREATE INDEX IF NOT EXISTS idx_events_verdict ON events(fake_news_verdict)",
"CREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp)",
"CREATE INDEX IF NOT EXISTS idx_events_state_verdict ON events(state, fake_news_verdict)",
"CREATE INDEX IF NOT EXISTS idx_events_timestamp_desc ON events(timestamp DESC)"
]
for index_sql in indexes:
cursor.execute(index_sql)
print(f"βœ… Created index: {index_sql.split('idx_')[1].split(' ON')[0]}")
# Analyze tables for better query planning
cursor.execute("ANALYZE")
print("βœ… Analyzed tables for query optimization")
# Vacuum to optimize storage
cursor.execute("VACUUM")
print("βœ… Vacuumed database for storage optimization")
conn.commit()
print("πŸš€ Database optimization complete!")
except Exception as e:
print(f"❌ Error optimizing database: {e}")
finally:
conn.close()
if __name__ == "__main__":
optimize_database()