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.

  • 相关阅读:
    分布式和集群
    c++ >>
    c++ ip地址相关
    c++ ip地址的操作 c版
    c++ 缺少动态库
    c++ dirname() basename()
    shell ulimit -n
    shell 进程查询相关的命令
    shell grep 高亮
    c++ swap 函数
  • 原文地址:https://www.cnblogs.com/linghuaichong/p/4149835.html
Copyright © 2011-2022 走看看