小编hel*_*jsm的帖子

UNION 很慢,但两个查询在单独的情况下都很快

不知道还有什么办法可以解决这个问题。我有一个表,它有一个开始和一个停止列,我想返回它通过开始和停止连接的结果,我想清楚地区分两者。现在这两个查询分别快速运行:

SELECT
            UNIX_TIMESTAMP(CONVERT_TZ(start_dev, '+00:00', GetCarrierTimezone(a0.carrier_id))) AS alertStart,
            NULL AS alertStop,
            c0.name AS carrier_name,
            carrier_image,
            l0.Latitude,
            l0.Longitude
        FROM
            carriers AS c0
                INNER JOIN start_stop AS a0 ON a0.carrier_id = c0.id
                    INNER JOIN pcoarg AS l0 ON a0.startLogId = l0.id
        WHERE
                FIND_IN_SET(a0.carrier_id, '89467,1,64578,222625,45013') > 0
            AND
                start_dev > '2013-03-11 11:46:48'
            AND 
                start_dev = (SELECT MIN(start_dev) FROM start_stop AS a1 WHERE a0.carrier_id = a1.carrier_id AND DATE(a1.start_dev) = DATE(a0.start_dev))
        AND IsNotificationInSchedule(22, start_dev) > 0
Run Code Online (Sandbox Code Playgroud)

所以这个需要 0.063。但是,如果我将它组合在一个 UNION 中(它是 UNION ALL 还是 DISTINCT 或 WHATEVER …

mysql

15
推荐指数
1
解决办法
2万
查看次数

标签 统计

mysql ×1