当我运行此查询时:
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.
提前感谢您的时间。
答案 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`