3.5 索引案例
下面通过一个电商订单表的实战案例,完整展示如何根据业务查询,系统性地设计出高性能索引。案例会涵盖最左前缀、覆盖索引、避免回表、利用索引排序等核心原则。🛒 1. 场景与表结构订单表orders:CREATETABLEorders(idBIGINTUNSIGNEDNOTNULLAUTO_INCREMENTCOMMENT'订单主键',user_idBIGINTUNSIGNEDNOTNULLCOMMENT'用户ID',statusENUM('pending','paid','shipped','completed','cancelled')NOTNULLCOMMENT'状态',create_timeDATETIMENOTNULLCOMMENT'创建时间',amountDECIMAL(10,2)NOTNULLCOMMENT'金额',product_nameVARCHAR(200)NOTNULLCOMMENT'商品名称',PRIMARYKEY(id))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;表中已有上千万数据,最常见的查询有以下几种:用户查询自己的订单:按用户 ID 查询,按创建时间倒序,分页。用户查看特定状态的订单:在 1 的基础上增加状态过滤。运营后台按状态和时间范围查询订单:不限定用户,但按状态和创建时间筛选,并按时间排序。统计某用户某状态下的订单金额:只取少数列。🔍 2. 查询分析与索引设计思路/