2011-12-25 81 views
1

我正在構建Facebook應用程序,應用程序通過打開的圖訪問用戶的朋友,我需要將它們包含在數據庫中。MySQL無法區分大的唯一值

現在這裏這個數據庫包含用戶id,name和我的應用程序需要的一些其他信息。爲了防止數據庫中有多個條目,我使用phpMyAdmin將用戶標識分配爲unique。現在這對很多值都可以正常工作,但同時它卻沒有很好的時間。

比方說,根據MySQL的是獨特的價值觀是:

51547XXXX 
52160XXXX 
52222XXXX 
52297XXXX 
52448XXXX 

但是,如果IDS成爲

5154716XX 
5154716XX 
or 
5216069673X 
521606903XX 

然後把它看做相似,故放棄其中之一。

結果,可以說,我進入我的朋友名單到表中,那麼它應該有記錄,如果我不使用的唯一約束,這是我獲得的價值。

但只要unique被激活,我只是得到這意味着記錄被丟棄,認爲他們與上年數據..

什麼,我能想到的是,在比較的解決方案首先使用php的數據,然後將它們記錄到數據庫中,但隨後使用這些查詢需要很長的時間。谷歌可以不回答這個問題,不知道爲什麼.. :(

+0

什麼是X的假設代表 – 2011-12-25 09:00:51

+5

如何是,表中定義(數據類型,該列) – Mat

+0

@Dagon:?X代表任意整數 – whizzzkid

回答

4

的Facebook用戶ID are too big以適應MySQL的INT型(這是32位)。你需要使用BIGINT類型,是64位,因此可以處理id範圍Facebook的使用

+0

這似乎大小順便說一句,MySQL對它的唯一準確度是什麼?對於正常的int和bigint來說,它是正確的? – whizzzkid

+0

正常的整數有符號32位,你可以達到平常的2^31-1。是signet 64位所以你可以得到2^63-1 –