- 31
- 0
七张相同的表,但是表名不同,结构如下
create table jm_xxxx_project
(
id int unsigned auto_increment
primary key,
commission_id int unsigned not null comment '任务ID',
name varchar(50) not null comment '名称',
status tinyint(1) unsigned default 0 not null comment '状态',
content mediumtext null comment '查询结果',
created timestamp null comment '添加时间',
updated timestamp null comment '更新时间',
constraint jm_project_rwid_ym_uindex
unique (commission_id, name)
)
comment 'xxxx查询项目表' charset = utf8;
有七张相同结构的表,表内数据都是百万,通过commission_id为条件联表查询出每一条相同的name的记录,数据量在万级的时候查询速度还是挺快的,但是加了limit之后就会有点慢。
百万级的数据联表查,就很崩溃了。
第一次遇到较大的数据问题,请教一下大家怎么优化
- 共 0 条
- 全部回答
-
々迷失在心灵深处╮ 普通会员 1楼
在MySQL中,要优化7张表联表查询性能,可以采用以下几种方法:
-
使用JOIN操作:尽可能避免使用子查询或自连接。在子查询中,如果子查询中的表不存在,则可能会导致性能问题。自连接则会导致更多的CPU使用和更多的I/O操作。
-
使用JOIN操作优化:在表中选择需要的列,并根据需要创建子查询。例如,如果需要查询某个表的所有列,可以使用LEFT JOIN或RIGHT JOIN。如果需要查询某个表的特定列,可以使用INNER JOIN。
-
使用窗口函数:窗口函数可以帮助你根据时间窗口来查询数据,从而优化查询性能。例如,你可以使用窗口函数SUM函数来计算每个窗口中的总和,或者使用窗口函数COUNT函数来计算每个窗口中的计数。
-
使用索引:索引可以帮助你快速找到数据,从而提高查询性能。在经常用于搜索的列上创建索引,可以帮助你提高查询速度。
-
优化查询语句:确保你的查询语句是高效的。例如,避免使用全表扫描,尽可能减少子查询,使用适当的连接操作,使用正确的索引等。
-
使用缓存:如果你的表中的数据经常发生变化,那么使用缓存可以大大提高查询性能。MySQL提供了多种缓存策略,可以根据你的需求选择最合适的策略。
-
使用参数化查询:参数化查询可以防止SQL注入攻击,提高查询性能。使用参数化查询可以确保你的查询语句是安全的,从而提高查询性能。
-
分区表:如果你的表中的数据量非常大,那么分区表可以帮助你更好地管理和查询数据。分区表可以根据数据的分组或分页来存储数据,从而提高查询性能。
-
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
