复合索引结合ORDER BY id的并发查询性能骤降问题
这就给你整理好book表的结构,用标准Markdown格式呈现,还帮你标注了关键细节:
book 数据表结构定义 CREATE TABLE `book` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `provider_id` int(10) unsigned DEFAULT '0', `source_id` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, `title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `description` longtext COLLATE utf8_unicode_ci, PRIMARY KEY (`id`), UNIQUE KEY `provider` (`provider_id`,`source_id`), KEY `idx_source_id` (`source_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1605425 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
关键细节说明
- 核心字段:
id:无符号自增整数,作为表的唯一主键,非空约束确保每条数据都有唯一标识provider_id:关联供应商的ID,默认值为0,用于区分不同书籍来源渠道source_id:书籍在对应供应商系统内的唯一标识,字符串类型最长支持64位title:书籍标题,最多255个字符,满足大部分书名存储需求description:长文本类型,用于存储书籍的详细介绍、内容摘要等信息
- 索引设计:
- 主键索引
PRIMARY KEY (id):InnoDB下的聚簇索引,既保证数据唯一性,也能大幅提升基于主键的查询效率 - 复合唯一索引
UNIQUE KEYprovider(provider_id,source_id):避免同一个供应商下出现重复的书籍源ID,确保数据唯一性 - 普通索引
KEYidx_source_id(source_id):优化通过书籍源ID进行的查询操作,提升检索速度
- 主键索引
内容的提问来源于stack exchange,提问作者seaguest
相关产品推荐
相关产品推荐

