MySQL查询导致“用户已超过'max_user_connections'活动连接”

时间:2016-08-03 15:56:55

标签: php mysql sql mysqli pdo

当我运行此查询时:

SELECT 
        (SELECT MAX(`newsm`.`id`))  AS `news_id`,
        (SELECT MAX(`articlesm`.`id`))  AS `articles_id`,
        (SELECT MAX(`albumsm`.`id`))  AS `albums_id`,
        (SELECT MAX(`videosm`.`id`))  AS `videos_id`
FROM `newsm`, `articlesm`, `albumsm`, `videosm`;

它在我的本地主机上运行正常,但是当我在我的网站上运行它时会打开太多线程并导致网站由于max_user_connections错误而关闭。

我通过这一行检查线程数 echo $pdo->getAttribute(PDO::ATTR_SERVER_INFO);在运行查询之前,线程数为2,运行查询后,数字会无限增加,直到网站关闭并显示错误503.

提前感谢您的时间。

1 个答案:

答案 0 :(得分:3)

你的问题的答案取决于你的意思是什么?#34; bad"是。如果在4个表之间进行交叉连接,每个表都可能非常大,当不需要这样的连接时,则表示查询是错误的。如果你想要的只是4个独立表中每个表的最大值,那么你真的不需要交叉连接,因为来自与各个表相关联的列的最大值不会被连接改变。相反,请尝试以下查询:

SELECT (SELECT MAX(`newsm`.`id`) FROM `newsm`)  AS `news_id`,
       (SELECT MAX(`articlesm`.`id`) FROM `articlesm`)  AS `articles_id`,
       (SELECT MAX(`albumsm`.`id`) FROM `albumsm`)  AS `albums_id`,
       (SELECT MAX(`videosm`.`id`) FROM `vidoesm`)  AS `videos_id`