账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    mysql 性能优化,7张表联表如何优化查询性能
    • 2020-01-01 00:00
    • 10
    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
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 在MySQL中,要优化7张表联表查询性能,可以采用以下几种方法:

      1. 使用JOIN操作:尽可能避免使用子查询或自连接。在子查询中,如果子查询中的表不存在,则可能会导致性能问题。自连接则会导致更多的CPU使用和更多的I/O操作。

      2. 使用JOIN操作优化:在表中选择需要的列,并根据需要创建子查询。例如,如果需要查询某个表的所有列,可以使用LEFT JOIN或RIGHT JOIN。如果需要查询某个表的特定列,可以使用INNER JOIN。

      3. 使用窗口函数:窗口函数可以帮助你根据时间窗口来查询数据,从而优化查询性能。例如,你可以使用窗口函数SUM函数来计算每个窗口中的总和,或者使用窗口函数COUNT函数来计算每个窗口中的计数。

      4. 使用索引:索引可以帮助你快速找到数据,从而提高查询性能。在经常用于搜索的列上创建索引,可以帮助你提高查询速度。

      5. 优化查询语句:确保你的查询语句是高效的。例如,避免使用全表扫描,尽可能减少子查询,使用适当的连接操作,使用正确的索引等。

      6. 使用缓存:如果你的表中的数据经常发生变化,那么使用缓存可以大大提高查询性能。MySQL提供了多种缓存策略,可以根据你的需求选择最合适的策略。

      7. 使用参数化查询:参数化查询可以防止SQL注入攻击,提高查询性能。使用参数化查询可以确保你的查询语句是安全的,从而提高查询性能。

      8. 分区表:如果你的表中的数据量非常大,那么分区表可以帮助你更好地管理和查询数据。分区表可以根据数据的分组或分页来存储数据,从而提高查询性能。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部