繁体   English   中英

如何在多个查询中将查询结果存储给我们?

[英]How to store results from a query to us IN multiple queries?

使用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 ... $ thirtiethquery时,页面开始变慢,我认为不断需要反复运行$ firstquery并没有帮助。

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

感谢您的任何想法! MacKniven

如果第一个查询非常慢,以至于明显影响您的页面加载时间,则应对其进行优化。

如果仍然太慢,则必须将结果临时存储在某个地方。

如果结果太多,则可以简单地使用一个临时表(该临时表在其他连接中不可见):

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

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

DROP TABLE FirstQueryResults;

而且,如果可以有许多结果,那么值得在临时表上创建索引

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM