簡體   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