:::mermaid
flowchart TD
A["🔵 Bắt đầu: analyze_query_indexes"] --> B["Phân tích tham số:<br/>queries, max_index_size_mb, method"]
B --> C{"Kiểm tra Queries"}
C -->|"Danh sách rỗng"| D["Trả về lỗi:<br/>Không có query nào"]
C -->|"> 10 queries"| E["Trả về lỗi:<br/>Tối đa 10 queries"]
C -->|"Hợp lệ"| F{"method?"}
F -->|"dta"| G["Phương pháp DTA:<br/>Database Tuning Advisor"]
F -->|"llm"| H["Phương pháp LLM:<br/>Phân tích bằng AI"]
G --> G1["Phân tích từng Query"]
G1 --> G2["Trích xuất Tables & Columns"]
G2 --> G3["Phân tích mệnh đề WHERE"]
G3 --> G4["Phân tích điều kiện JOIN"]
G4 --> G5["Phân tích ORDER BY"]
G5 --> G6["Phân tích GROUP BY"]
G6 --> G7["Lấy Indexes hiện tại"]
G7 --> G8["Xác định Indexes thiếu"]
G8 --> G9["Ước tính kích thước Index"]
G9 --> G10{"Kích thước <= max_index_size_mb?"}
G10 -->|"Có"| G11["Thêm vào đề xuất"]
G10 -->|"Không"| G12["Bỏ qua - Quá lớn"]
G11 --> I
G12 --> I
H --> H1["Gửi Queries tới LLM"]
H1 --> H2["LLM phân tích Patterns"]
H2 --> H3["Tạo đề xuất Index"]
H3 --> I
I["Tổng hợp đề xuất"]
I --> J["Kiểm tra với Hypothetical Indexes"]
J --> K["Tính cải thiện dự kiến"]
K --> L["Xếp hạng theo tỷ lệ Lợi ích/Chi phí"]
L --> M["Định dạng đề xuất:<br/>- CREATE INDEX statements<br/>- Cải thiện dự kiến<br/>- Ước tính kích thước"]
M --> N["Trả về kết quả"]
N --> O["🔴 Kết thúc"]
D --> O
E --> O
style A fill:#4CAF50,color:white
style O fill:#f44336,color:white
style C fill:#FF9800,color:white
style F fill:#2196F3,color:white
style G10 fill:#FF9800,color:white