Mysql 长时间运行的查询问题
我正在尝试用一个脚本来解决一些问题,我没有编写这个脚本,因为该站点似乎很快就填满了mysqlMysql 长时间运行的查询问题,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
/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;