-- v8: Performance indexes for KOL list + sales matching + stats queries.
-- Run these in phpMyAdmin. "Duplicate key name" errors are safe to ignore — means the index
-- already exists.

-- ── Sales matching (used by entry_gmv / entry_orders / by_content / video_gmv) ──
-- Composite index lets MySQL filter by content_id + status in one index lookup.
CREATE INDEX idx_so_content_status ON sales_orders(content_id, order_status);

-- ── KOL list filter & sort ──
-- Filter by creator + status combos
CREATE INDEX idx_ke_creator_status ON kol_entries(creator_id, status);
-- Sort by entry_date (used in list ORDER BY)
CREATE INDEX idx_ke_entry_date ON kol_entries(entry_date);
-- Specialist filter
CREATE INDEX idx_ke_specialist ON kol_entries(specialist_id);

-- ── kol_videos: aggregate per entry (video_count, tt_views sum, etc.) ──
CREATE INDEX idx_kv_entry_id ON kol_videos(kol_entry_id);
-- Sales matching uses content_id (already unique-indexed, but real_content_id needs one)
CREATE INDEX idx_kv_real_content ON kol_videos(real_content_id);

-- ── kol_entry_items: SUM(qty), COUNT(*) per entry ──
CREATE INDEX idx_kei_entry_id ON kol_entry_items(kol_entry_id);

-- ── video_entries (IA): sales matching ──
CREATE INDEX idx_ve_content_id ON video_entries(content_id);
CREATE INDEX idx_ve_real_content ON video_entries(real_content_id);
