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

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

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    mysql优化。左表是25W数据,右表目前小表,但随后是百万,千万,亿级别的表,慢慢增长
    • 2019-12-17 00:00
    • 10
    43
    0

    现在的问题是,我左表是25W数据,一个部门表,右表是部门的积分明细表,现在需要左表连右表,然后用where like 范围查找,如果关键字是全表都有的话,查询出来的结果是25W条数据,查询很慢,大概要2S。

    然后需求还要按积分的高低排名,同分数要按部门名字来排名,加上这个排序条件,就需要5S大概。

    我想问下各位,对于这种情况,能怎么优化起来。

    sql语句如下

    SELECT 
    ifnull(a.accumulative_integral,0) as accumulative_integral,
    b.dept_full_name,
    b.dept_name,
    b.is_delete
    FROM
    tb_integral_statistics as b
    LEFT  JOIN 
    ( select sum(score) as accumulative_integral,dept_full_name,is_delete
     from tb_party_integral
    where is_delete = 0
     group by dept_full_name
     
    
    ) as a
    
    ON a.dept_full_name = b.dept_full_name
    
    WHERE
    1 = 1
    and b.dept_full_name like '1-%'
    AND b.is_delete = 0
    ORDER BY
    accumulative_integral DESC,
    CONVERT (dept_name USING gbk) ASC 
    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 妞,给爷笑一个 普通会员 1楼

      在处理大规模表时,性能优化是一个重要的任务。以下是一些可能的优化策略:

      1. 使用索引:对于经常用于搜索的列,可以创建索引。这将大大提高查询速度。

      2. 分区:对于非常大的表,可以考虑将其分为多个较小的表。这将使查询更容易进行,并且可以减少数据复制的次数。

      3. 使用批量插入:如果表中的数据量非常大,那么一次性插入所有的数据可能会非常慢。在这种情况下,可以考虑使用批量插入,一次性插入所有数据。

      4. 使用存储过程:存储过程可以将多个查询和数据处理任务封装在一起,这将大大提高性能。

      5. 使用正确的查询:对于查询,确保使用正确的索引和条件。避免使用复杂的查询语句,这可能会降低性能。

      6. 使用正确的数据库连接:确保使用正确的数据库连接。不同的数据库连接可能需要不同的优化策略。

      7. 使用正确的存储引擎:不同的存储引擎可能有不同的性能。在选择存储引擎时,应该考虑其性能和可扩展性。

      8. 优化查询语句:优化查询语句,如避免全表扫描,减少子查询,合理使用JOIN等。

      9. 使用事务:在处理大量数据时,使用事务可以保证数据的一致性。

      10. 使用缓存:对于经常访问的列,可以考虑使用缓存。这将大大提高性能。

      以上只是一些基本的优化策略,具体的优化策略需要根据你的表的实际情况来确定。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部