Files
hfb_sys/backend/migrations/000003_add_indexes.sql
T
2026-06-05 07:41:52 +08:00

67 lines
2.8 KiB
SQL

-- ============================================
-- 数据库索引优化迁移
-- 创建时间: 2026-06-05
-- 目的: 优化高频查询的性能
-- ============================================
SET NAMES utf8mb4;
-- -------------------------------------------
-- 1. 订单状态+创建时间复合索引
-- 用途: 后台订单管理、用户订单列表按时间排序
-- 场景: SELECT * FROM rental_orders WHERE status = ? ORDER BY created_at DESC
-- -------------------------------------------
ALTER TABLE rental_orders
ADD INDEX idx_rental_orders_status_created_at (status, created_at DESC);
-- -------------------------------------------
-- 2. 钱包流水按用户+业务类型+时间查询
-- 用途: 用户查看特定类型的流水记录
-- 场景: SELECT * FROM wallet_ledger WHERE user_id = ? AND biz_type = ? ORDER BY created_at DESC
-- -------------------------------------------
ALTER TABLE wallet_ledger
ADD INDEX idx_wallet_ledger_user_biz_created (user_id, biz_type, created_at DESC);
-- -------------------------------------------
-- 3. 订单结算状态查询优化
-- 用途: 查询待结算订单、按号主查询结算记录
-- 场景: SELECT * FROM rental_orders WHERE settlement_status = ? AND owner_id = ? ORDER BY created_at
-- -------------------------------------------
ALTER TABLE rental_orders
ADD INDEX idx_rental_orders_settlement (settlement_status, owner_id, created_at);
-- -------------------------------------------
-- 4. 商品发布时间查询优化
-- 用途: 首页商品列表按发布时间排序
-- 场景: SELECT * FROM rental_listings WHERE status = 'active' AND review_status = 'approved' ORDER BY published_at DESC
-- 注意: 使用部分索引(MySQL 8.0+)只索引可用商品
-- -------------------------------------------
ALTER TABLE rental_listings
ADD INDEX idx_rental_listings_published (status, review_status, published_at DESC);
-- 如果需要进一步优化,可以考虑添加 in_transaction 列
-- 但当前索引已经足够覆盖大部分查询
-- -------------------------------------------
-- 5. 用户实名认证状态查询
-- 用途: 查询未实名用户、查询活跃且已实名用户
-- 场景: SELECT * FROM users WHERE realname_status = 'verified' AND status = 'active'
-- -------------------------------------------
ALTER TABLE users
ADD INDEX idx_users_realname_status (realname_status, status);
-- ============================================
-- 索引创建完成
-- ============================================
-- 验证索引创建情况(可选,用于开发环境验证)
-- SHOW INDEX FROM rental_orders WHERE Key_name LIKE 'idx_rental_orders_%';
-- SHOW INDEX FROM wallet_ledger WHERE Key_name LIKE 'idx_wallet_ledger_%';
-- SHOW INDEX FROM rental_listings WHERE Key_name LIKE 'idx_rental_listings_%';
-- SHOW INDEX FROM users WHERE Key_name LIKE 'idx_users_%';