mysql case when 查询一个效率问题
黄舟
黄舟 2017-04-17 15:21:55
0
1
652

第一种:

SELECT
    `user`.username,
    `user`.email,
    `user`.id AS user_id,
    user_class.level_id,
    user_class.class_id AS cid,
    user_class.create_time AS bontime,
    class.graduation_time,
    class.offline_graduation_time,
    class.is_baidan,
    class. NAME AS class,
    class.period_id,
    class.offline_period_id,
    company. NAME AS branch,
    company.id AS bid
FROM
    `user_class`
INNER JOIN `user` ON user_class.user_id = `user`.id
INNER JOIN class ON user_class.class_id = class.id
LEFT JOIN company ON class.company_id = company.id
LEFT JOIN period ON class.period_id = period.id
WHERE
    class. DISABLE = 1
AND class.is_baidan IN ('1', '2')
AND `user_class`.level_id IN ('10', '12', '14')
AND CASE
WHEN is_baidan = 1 THEN
    class.graduation_time=0 
    OR class.graduation_time > 1469980800
WHEN is_baidan = 2 THEN
    class.offline_graduation_time = 0
    OR class.offline_graduation_time > 1469980800
END;

第二种:

SELECT
    `user`.username,
    `user`.email,
    `user`.id AS user_id,
    user_class.level_id,
    user_class.class_id AS cid,
    user_class.create_time AS bontime,
    class.graduation_time AS eontime,
    class.offline_graduation_time,
    class.is_baidan,
    class. NAME AS class,
    class.period_id,
    class.offline_period_id,
    company. NAME AS branch,
    company.id AS bid
FROM
    `user_class`
INNER JOIN `user` ON user_class.user_id = `user`.id
INNER JOIN class ON user_class.class_id = class.id
LEFT JOIN company ON class.company_id = company.id
LEFT JOIN period ON class.period_id = period.id
WHERE
    class. DISABLE = 1
AND `user_class`.level_id IN ('10', '12', '14')
AND (
    (
        class.is_baidan = 1 AND 
        (class.graduation_time = 0 OR class.graduation_time > 1469980800)
    )
    OR (
        class.is_baidan = 2 AND 
        (class.offline_graduation_time=0 OR class.offline_graduation_time >1469980800)
    )
);

这两个sql语句查询结果相同,想问问到底是哪个好一点

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(1)
刘奇

看mysql的执行计划,你这个sql语句不执行执行计划看,我觉得谁也告知不了你准确的答案,因为他们没有非常明显的性能差异。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!