2013-09-25 99 views
4

我有一個有100萬行的表。它具有用戶標識作爲其主鍵。我有一個有500個用戶ID的數組。從mysql數據庫中獲取幾百條記錄

我想從其用戶標識符在數組中的表中選擇所有記錄。我知道這樣做的一種方法是將數組更改爲字符串,並通過傳遞字符串來運行IN查詢。

但我認爲這不是有效的方法。所以好好建議其他方法。

+3

你從哪裏得到這些用戶ID?無法運行連接查詢? –

+0

其實我真正的問題是我得到一個fb id和它的fb訪問令牌並通過POST參數,然後通過facebook的圖形API獲取用戶朋友的fb ID,然後想要查找所有在我們的數據庫中註冊的朋友。只是不要讓它變得複雜我發佈上面的問題。所以不能申請加入。 –

回答

0

我的猜測是,你從另一個表中獲得這些用戶ID,並且你將它們存儲在一個數組中。如果這是正確的,那麼你應該改變提取這些用戶ID的查詢,以便它使用一個連接。

-1

加入將幫助你在那裏,因爲IN()不是一個良好的編程習慣。 您可以瞭解到加入這裏:http://mysqljoin.com/

1

我假設你的ID是整數。也許你從其他來源獲得這個ID列表,這樣在MySQL端的連接不是所需的解決方案。如果是的話,那麼找到您的500 Ids列表中存在的最大和最小ID。你可以在PHP端做到這一點。當你有最大值和最小值,然後查詢MySQL數據庫與where clause

select ... 
    from table_name 
    where min_id <= id and id <= max_id 

id是主鍵這樣做的好處是,它已經編入索引。

1

我已經完成了這個過去,我不確定我的方法是最有效的。

我創建一個字符串對IDS進行:其中id = A或ID = B或ID = C ...

然後我在它前面加select語句,並做了使用fetchall。

+0

我會添加你可以使用這個,通過使字符串「在哪裏id(a,b,c,...) – asantaballa

+0

我已經寫在我的帖子中,我正在使用IN查詢簡化了一點。不要重複除此之外,還需要其他建議。 –

相關問題