[英]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.