我有一個有100萬行的表。它具有用戶標識作爲其主鍵。我有一個有500個用戶ID的數組。從mysql數據庫中獲取幾百條記錄
我想從其用戶標識符在數組中的表中選擇所有記錄。我知道這樣做的一種方法是將數組更改爲字符串,並通過傳遞字符串來運行IN查詢。
但我認爲這不是有效的方法。所以好好建議其他方法。
我有一個有100萬行的表。它具有用戶標識作爲其主鍵。我有一個有500個用戶ID的數組。從mysql數據庫中獲取幾百條記錄
我想從其用戶標識符在數組中的表中選擇所有記錄。我知道這樣做的一種方法是將數組更改爲字符串,並通過傳遞字符串來運行IN查詢。
但我認爲這不是有效的方法。所以好好建議其他方法。
我的猜測是,你從另一個表中獲得這些用戶ID,並且你將它們存儲在一個數組中。如果這是正確的,那麼你應該改變提取這些用戶ID的查詢,以便它使用一個連接。
加入將幫助你在那裏,因爲IN()不是一個良好的編程習慣。 您可以瞭解到加入這裏:http://mysqljoin.com/
我假設你的ID是整數。也許你從其他來源獲得這個ID列表,這樣在MySQL端的連接不是所需的解決方案。如果是的話,那麼找到您的500 Ids列表中存在的最大和最小ID。你可以在PHP端做到這一點。當你有最大值和最小值,然後查詢MySQL數據庫與where clause
select ...
from table_name
where min_id <= id and id <= max_id
id
是主鍵這樣做的好處是,它已經編入索引。
我已經完成了這個過去,我不確定我的方法是最有效的。
我創建一個字符串對IDS進行:其中id = A或ID = B或ID = C ...
然後我在它前面加select語句,並做了使用fetchall。
我會添加你可以使用這個,通過使字符串「在哪裏id(a,b,c,...) – asantaballa
我已經寫在我的帖子中,我正在使用IN查詢簡化了一點。不要重複除此之外,還需要其他建議。 –
你從哪裏得到這些用戶ID?無法運行連接查詢? –
其實我真正的問題是我得到一個fb id和它的fb訪問令牌並通過POST參數,然後通過facebook的圖形API獲取用戶朋友的fb ID,然後想要查找所有在我們的數據庫中註冊的朋友。只是不要讓它變得複雜我發佈上面的問題。所以不能申請加入。 –