如何将查询结果存储到多个查询中?

时间:2017-06-19 22:26:19

标签: php sql sqlite

使用PHP和Sqlite3,我有一个查询,如:

$firstquery = "SELECT id FROM mytable WHERE critera=........";

根据标准,这可以为我提供1到1000个 id 的任何地方。

然后我在我的页面上的最多40个其他SQL查询中使用此发现集。所有都是变体,如:

$secondquery = "SELECT name FROM nametable WHERE nametable.id IN (".$firstquery.")";
$thirdquery = "SELECT car FROM cartable WHERE cartable.id IN (".$firstquery.")";

现在,当我有很多并且丢失了这些$ second,$ third ... $ 30thquery页面开始变慢,我认为不断需要一遍又一遍地运行$ firstquery没有帮助。

有没有办法避免需要一遍又一遍地运行$ firstquery?也许以某种方式存储结果? (我尝试将结果存储为字符串并将其存储在WHERE中,但如果有数千个 id ,那么该子句的参数太多了。)

感谢您的任何想法! MacKniven

1 个答案:

答案 0 :(得分:0)

如果第一个查询速度太慢而导致页面加载时间明显受影响,则应对其进行优化。

如果它仍然太慢,你必须暂时将结果存储在某处。

如果结果太多,您只需使用临时表(临时表在其他连接中不可见):

CREATE TEMPORARY TABLE FirstQueryResults AS
SELECT id FROM mytable WHERE critera=........;

SELECT name FROM nametable WHERE nametable.id IN FirstQueryResults;
...

DROP TABLE FirstQueryResults;

如果可以有很多结果,那么临时表上的create an index可能是值得的。

相关问题