使用临时表进行关联查询没有走索引问题排查

调试过程中发现一个很坑的问题,就是临时表关联查询的时候,没有走索引,导致了查询很慢。但是开发环境因为数据比较少,所以开发过程没有发现。测试环境数据多了之后才暴露这个问题,解决方法就是,创建临时表的时候,指定表的字段结构就行了。

        CREATE TEMPORARY TABLE IF NOT EXISTS account_temp(account VARCHAR ( 13 ) CHARACTER SET utf8 COLLATE utf8_general_ci) select temp.account from
        <foreach collection="list" index="index" item="item" open="(" separator="union" close=")">
            select #{item} as account
        </foreach>
        temp;
        CREATE INDEX IX_account_temp ON account_temp(account);
        select b.account custAccount, d.dzh_account saleAccount from wk_crm_dzh_customer a
            join account_temp b on a.username = b.account
            join wk_crm_customer c on a.dzh_customer_id = c.dzh_customer_id and c.business_type = 'VMEX0U'
            join wk_admin_user d on c.owner_user_id = d.user_id
            where d.dzh_account != '';
        DROP TEMPORARY TABLE IF EXISTS account_temp;

注意:关联的结构字段类型要保持一致,字符集和排序规则都要保持一致,才会索引生效

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值