1
我有4個表獲取數據,SQLite的查詢從多個表
ModTable 的file_id,mod_flag
TrackTable artist_id album_id 的file_id 標題
AlbumTable album_id,專輯
ArtistTable artist_id,藝術家
我需要得到artist_id,album_id,專輯,藝術家,FID,標題從這些表中所有的file_id其中mod_flag = 1
到目前爲止我所做的是(僞代碼)
1. SELECT file_id, artist_id, album_id, title FROM TrackTable WHERE file_id IN (SELECT file_id FROM ModTable WHERE mod_flag=1);
在極端情況下,這將返回大約30000 f ile_ids。因此,對於所有這些file_ids,
2. for(int count=0; count < noOfRecords/*30000*/; count++)
SELECT artist FROM ArtistTable WHERE artist_id==%llu
SELECT album FROM AlbumTable WHERE album_id==%llu
上面的查詢對我的作品,但我想知道這個優化的方式是否實現這一點。我應該避免在循環內查詢嗎?
非常感謝您的查詢。我做了這個查詢和我提到的(在問題中)的性能比較。您使用JOIN的建議比在循環內部使用查詢快了大約10秒(在實際的TI J6硬件中進行了測試)。 – wrongElk 2014-10-16 11:00:27