我的选择语句看起来像这样:
CREATE TEMPORARY TABLE t1 AS(
SELECT id, COUNT(*) AS count
FROM some_other_table
GROUP BY id);
ALTER TABLE t1 ADD UNIQUE INDEX (id);
SELECT * FROM t2 INNER JOIN t1 ON t1.id = t2.id
我正在使用以下PHP代码:
$pdo->query($sql)->fetchAll();
但是我收到错误,因为PDO不允许在一个查询中执行多个语句。
从我到目前为止所读到的,我应该使用exec()。但是exec()不会返回select语句的结果。我不需要针对此特定查询进行参数化,因此任何 unsafe 方法也都可以工作,因为查询本身对任何外部更改都是完全安全的。
现在我正在做的是将sql代码作为3个不同的语句执行。但我相信这比一次性执行要慢,并希望找到更好的方法来做到这一点。
答案 0 :(得分:1)
与许多其他缺乏经验的开发人员一样,您在尝试优化代码时看起来错误。
虽然对数据库进行了多少次调用并不重要,但是创建临时表的想法是什么使您的代码效率低下。你必须摆脱这个非常缓慢的部分,而不是试图优化0.00001%