mysql通过TEXT字段进行关联的优化方案


 

mysql如果通过超长的字段进行on关联,会导致效率很低,7k关联1.4k,结果为30+W的数据量,执行时间高达50秒。

将这个字段进行md5,然后再通过md5后的值进行关联,执行效率会大大优化,同样的SQL,可在5秒内完成。

 

 

select
     count(1) as cnt
from (
    select
         md5(activity.target_building_ids) as md5
    from aaaaaaaaaaaaaaaaaaaaa enroll -- 5472
) t1
left join (
    select 
         md5(t21.target_building_ids) as md5
        ,t22.name
    from (select distinct bbbbbbbbbbbbbbbbbbbbb from h_activity where ifnull(target_building_ids,'') <> '') t21
    join (
        select
             bld.id
            ,proj.name
        from ccccccccccccccccccc bld -- 6277
        left join dddddddddddddddddddddd proj -- 575
            on proj.id =bld.proj_id and proj.is_deleted=0
        where bld.is_deleted =0 
    ) t22
        on instr(t21.target_building_ids,t22.id)>0
) t2 -- 1305
    on t1.md5 = t2.md5
;

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM