MySQL 百万级/千万级 建立索引

Posted 在奋斗的大道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 百万级/千万级 建立索引相关的知识,希望对你有一定的参考价值。

问题:今天接到公司项目经理提出针对**政府项目管理平台的合同管理功能模块提出性能优化要求。

原因:由于**政府项目管理平台数据存储由oracle 10g 迁移至开源mysql 8,导致合同管理功能模块加载缓慢。

解决办法:通过完善合同表的索引数据,提示数据库的查询效率。

现状:合同表的数据已经到达千万级,如果直接在biz_contract(合同表)创建索引,索引构建时间缓慢,也无法预估全表建完优化索引时间是多少。

优化:

  1. 基于biz_contract(合同表)创建biz_contract_temp(合同临时表)

  1. 在biz_contract_temp(合同临时表)创建优化索引

  1. 将biz_contract(合同表)迁移导入至biz_contract_temp(合同临时表)

  1. 清空/删除biz_contract(合同表),将biz_contract_temp(合同临时表) 重命名

SQL伪代码

-- 临时表创建
create table biz_contract_temp like biz_contract;
-- 普通索引创建
create index common_htbh on biz_contract_temp(htbh(200));
-- 联合索引创建
create index ptid_join_tid on biz_contract_temp(ptid(32), tid(32))
-- 数据迁移
insert into biz_contract_temp select * from biz_contract;
-- 清空表
truncate table biz_contract;
-- 删除表
drop table biz_contract
-- 表重命名
rename table biz_contract_temp to biz_contract

以上是关于MySQL 百万级/千万级 建立索引的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 百万级/千万级表 全量更新

MySQL百万级千万级数据多表关联SQL语句调优

mysql 百万级的表怎么处理

MySQL 百万级分页优化(Mysql千万级快速分页)

php+mysql 如何优化千万级数据模糊查询加快

MySql 索引数据结构,千万级大表,关于性别及年龄字段是否需要加索引?