Mysql 长时间运行的查询问题

Mysql 长时间运行的查询问题,mysql,mysql-slow-query-log,Mysql,Mysql Slow Query Log,我正在尝试用一个脚本来解决一些问题,我没有编写这个脚本,因为该站点似乎很快就填满了mysql/tmp目录 我检查了慢速查询日志,它有很多这样的查询 SELECT COUNT(*) AS `total` FROM ( SELECT * FROM `Advertising_Business_and_Retail` WHERE MATCH (`wm`, `lo

我正在尝试用一个脚本来解决一些问题,我没有编写这个脚本,因为该站点似乎很快就填满了mysql
/tmp
目录

我检查了
慢速查询日志
,它有很多这样的查询

SELECT
    COUNT(*) AS `total`
FROM
    (
        SELECT
                *
        FROM
            `Advertising_Business_and_Retail`
        WHERE
            MATCH (`wm`, `locn`, `gns`) AGAINST('outdoor apparel company')
    UNION
        SELECT
                *
        FROM
            `Chemical` WHERE MATCH (`wm`, `locn`, `gns`) AGAINST('outdoor apparel company')
    UNION
        SELECT
                *
        FROM `Clothing` WHERE MATCH (`wm`, `locn`, `gns`) AGAINST('outdoor apparel company')
    )
AS t;
除了我认为总共有45个工会(每个类别表1个)之外,这些表并不庞大,但是广告、商业和零售表本身就有大约450k个

我手动运行了这个查询,大约花了2.5分钟

我猜这就是为什么/tmp目录填充得这么快的原因吧


关于如何解决此问题的任何提示?

如果您确定所选行中没有重复的行,请尝试将
联合
替换为
联合所有

此外,您还可以使用简单的添加来替换
UINON-ALL

select (
  (select count(1) from `Advertising_Business_and_Retail` WHERE MATCH (`wm`, `locn`, `gns`) AGAINST('outdoor apparel company'))
+ (select count(1) from `Chemical` WHERE MATCH (`wm`, `locn`, `gns`) AGAINST('outdoor apparel company'))
+ (select count(1) from `Clothing` WHERE MATCH (`wm`, `locn`, `gns`) AGAINST('outdoor apparel company'))
) as total
这快一点吗

SELECT
    SUM(`count`) AS `total`
FROM
    (
        SELECT
               COUNT(*) AS `count`
        FROM
            `Advertising_Business_and_Retail`
        WHERE
            MATCH (`wm`, `locn`, `gns`) AGAINST('outdoor apparel company')
    UNION
        SELECT
               COUNT(*) AS `count`
        FROM
            `Chemical` WHERE MATCH (`wm`, `locn`, `gns`) AGAINST('outdoor apparel company')
    UNION
        SELECT
                COUNT(*) AS `count`
        FROM `Clothing` WHERE MATCH (`wm`, `locn`, `gns`) AGAINST('outdoor apparel company')
    )
AS t;