-- 数据库性能优化脚本
-- 为xlxumu项目的核心表创建索引以提升查询性能

-- 用户表索引优化（已存在的跳过）
-- CREATE INDEX IF NOT EXISTS idx_users_username ON users(username);
-- CREATE INDEX IF NOT EXISTS idx_users_email ON users(email);
-- CREATE INDEX IF NOT EXISTS idx_users_phone ON users(phone);
-- CREATE INDEX IF NOT EXISTS idx_users_status ON users(status);
-- CREATE INDEX IF NOT EXISTS idx_users_created_at ON users(created_at);

-- 牛只管理表索引优化（已存在的跳过）
-- CREATE INDEX IF NOT EXISTS idx_cattle_ear_tag ON cattle(ear_tag);
-- CREATE INDEX IF NOT EXISTS idx_cattle_owner_id ON cattle(owner_id);
-- CREATE INDEX IF NOT EXISTS idx_cattle_breed ON cattle(breed);
-- CREATE INDEX IF NOT EXISTS idx_cattle_status ON cattle(status);
-- CREATE INDEX IF NOT EXISTS idx_cattle_birth_date ON cattle(birth_date);
-- CREATE INDEX IF NOT EXISTS idx_cattle_created_at ON cattle(created_at);

-- 用户类型索引
CREATE INDEX IF NOT EXISTS idx_users_user_type ON users(user_type);

-- 牛只性别和健康状态索引
CREATE INDEX IF NOT EXISTS idx_cattle_gender ON cattle(gender);
CREATE INDEX IF NOT EXISTS idx_cattle_health_status ON cattle(health_status);

-- 复合索引优化（针对常见查询组合）
-- CREATE INDEX IF NOT EXISTS idx_cattle_owner_status ON cattle(owner_id, status);
CREATE INDEX IF NOT EXISTS idx_users_type_status ON users(user_type, status);
CREATE INDEX IF NOT EXISTS idx_cattle_owner_health ON cattle(owner_id, health_status);

-- 分析表统计信息（SQLite特定）
ANALYZE;

-- 查询优化建议注释
/*
性能优化建议：

1. 查询优化：
   - 使用 LIMIT 限制返回结果数量
   - 避免 SELECT * ，只查询需要的字段
   - 使用 WHERE 条件过滤数据
   - 合理使用 ORDER BY 和索引配合

2. 索引使用：
   - 经常用于 WHERE 条件的字段应建立索引
   - 经常用于 ORDER BY 的字段应建立索引
   - 外键字段应建立索引
   - 避免在小表上建立过多索引

3. 数据库维护：
   - 定期运行 ANALYZE 更新统计信息
   - 定期运行 VACUUM 整理数据库文件
   - 监控慢查询日志

4. 应用层优化：
   - 使用连接池管理数据库连接
   - 实现查询结果缓存
   - 分页查询大数据集
   - 批量操作减少数据库交互次数
*/