![](/img/trans.png)
[英]Best practice when dealing with multiple results from a query/multiple queries?
[英]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.