| |
| """ |
| 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""" |
| |
| |
| 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...") |
| |
| |
| 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]}") |
| |
| |
| cursor.execute("ANALYZE") |
| print("β
Analyzed tables for query optimization") |
| |
| |
| 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() |