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

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值