2
我正在優化我寫的一個小應用程序,以減少每個請求的數據庫調用次數,並且不知道如何構建我的SQL查詢。將多個相同的SQLite查詢合併爲一個
我有數據這樣的事情
name stat1 stat2 stat3
john 1 2 22
john 2 4 -2
richard 3 4 0
john 0 3 1
jacob 12 9 -20
我現在的說法是沿着線的東西:
userNames = execute("SELECT DISTINCT name FROM ___")
for user in userNames:
var userdata = "SELECT avg(stat1), avg(stat2), avg(stat3) FROM ___ WHERE name == '"+str(user)
現在這個理解並不好。它會打20個電話(幸好我的用戶表現在很低),但它的規模很差。 (每個數據庫調用需要.050s)
一個朋友建議沿着線的東西:
"SELECT avg(stat1),avg(stat2),avg(stat3) from ___ where name in " userNames
但這僅返回一行,在那裏我需要LEN(用戶名)行#。
這是使用Join的好例子嗎? (我是一個SQL noob)。
謝謝!
謝謝你的建議!增加了一個額外的約束,現在它運作得非常好。 'SELECT name,avg(stat1)... FROM ___ WHERE name in(....)GROUP BY name' –