MySQL 百万级/千万级 建立索引
Posted 在奋斗的大道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 百万级/千万级 建立索引相关的知识,希望对你有一定的参考价值。
问题:今天接到公司项目经理提出针对**政府项目管理平台的合同管理功能模块提出性能优化要求。
原因:由于**政府项目管理平台数据存储由oracle 10g 迁移至开源mysql 8,导致合同管理功能模块加载缓慢。
解决办法:通过完善合同表的索引数据,提示数据库的查询效率。
现状:合同表的数据已经到达千万级,如果直接在biz_contract(合同表)创建索引,索引构建时间缓慢,也无法预估全表建完优化索引时间是多少。
优化:
基于biz_contract(合同表)创建biz_contract_temp(合同临时表)
在biz_contract_temp(合同临时表)创建优化索引
将biz_contract(合同表)迁移导入至biz_contract_temp(合同临时表)
清空/删除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 百万级/千万级 建立索引的主要内容,如果未能解决你的问题,请参考以下文章