zoukankan      html  css  js  c++  java
  • Mysql in statement performance related with its position?

    select
        *
    from
        (
        select
            event_date,
            '2014-12-06' as active_date,
            channel_id,
            new_user_count as new_user_count,
            1d_retain/new_user_count as 1d_retain_rate
        from
            web_channel_retain
        where
            app_id=-1
        and
            event_date='2014-12-05'
        and
            new_user_count>= 500
        and
            channel_id in (select distinct channel_id from formated_channel_category where type_id=507 )
        )as f
    order by 1d_retain_rate desc
    limit 0,50;
    select
        *
    from
        (
        select
            event_date,
            '2014-12-06' as active_date,
            channel_id,
            new_user_count as new_user_count,
            1d_retain/new_user_count as 1d_retain_rate
        from
            web_channel_retain
        where
            channel_id in (select distinct channel_id from formated_channel_category where type_id=507 )
        and
            app_id=-1
        and
            event_date='2014-12-05'
        and
            new_user_count>= 500
            
        )as f
    order by 1d_retain_rate desc
    limit 0,50;

     The 1st sql runs less than 2 seconds, while 2nd sql runs a long time(I killed it before it completed). The only difference is the position of the in statement. This means mysql executes "where conditions" in the exact order that we write them.

  • 相关阅读:
    507. Perfect Number
    Dos与Linux的断行字符
    724. Find Pivot Index
    110. Balanced Binary Tree
    掌握numpy(三)
    掌握numpy(二)
    掌握numpy(一)
    203. Remove Linked List Elements
    25个Java机器学习工具和库
    贝叶斯学习--极大后验概率假设和极大似然假设
  • 原文地址:https://www.cnblogs.com/linghuaichong/p/4149835.html
Copyright © 2011-2022 走看看