2009-12-24 67 views
5

有某種用戶配置文件的大部分網站要麼做這樣的事情:最適合配置文件,數字或名稱的是什麼?

profile.php U = 123445

要不然:

profile.php U =賈森? .Davis

所以我很好奇,使用一個名稱來查找一個配置文件與PHP/MySQL與使用數字來查找配置文件記錄會慢一些嗎?

回答

12

在大概每種情況下,字符串查找確實可能比數字字符串查找更慢。但差別非常小,永遠不會被注意到。直到你有一個真的大量的用戶。

但看看SO:他們都做。

http://stackoverflow.com/users/187606/pekka 

快速數據庫訪問的數量。

漂亮的外觀和搜索引擎可見性的名稱。

與兩個名稱沒有衝突,因爲ID是用來搜索記錄的。

我認爲這是兩個世界和最佳的最好的。

雖然需要URL重寫。

+0

爲什麼一個數字比db查找中的名字更快? (假設兩者都被索引)。 – 2009-12-24 03:00:24

+0

我不是數據庫專家,但常識告訴我,即使索引(即將字符串的一部分轉換爲記錄編號)也必須比直接引用記錄編號本身更慢。不明顯慢,但仍然較慢。糾正我,如果我錯了。 – 2009-12-24 03:03:25

+3

@Esteban,與(例如)32字節的字符串相比,一個數字很可能會被存儲爲一個固定寬度的整數(比如4個字節)。由於數據較少,比較會更快,但更重要的是,索引的每個頁面都會存儲更多記錄,從而減少磁盤I/O。 – paxdiablo 2009-12-24 03:05:30

-1

如果名稱是數據庫中的關鍵字,查找時間不應該太差,並且使用名稱可以爲您提供更好看的URL,因此我建議您使用名稱。

+0

這個名稱最好不要成爲數據庫中的一個鍵,否則當另一個例如約翰史密斯試圖開設一個賬戶。 – 2009-12-24 03:00:34

+0

除非你很高興發出像John.Smith.76352574763這樣的用戶名:-) – paxdiablo 2009-12-24 03:06:51

+0

等等,你的意思是大多數網站允許你打開兩個同名的賬戶? – 2009-12-24 04:07:54

2

這個名字更具可讀性,更容易調試,但名稱並不保證是唯一的,所以它需要通過uniqifier(我相信這實際上是一個用於統一的單詞)來擴充,例如將數字追加到名稱的末尾。

0

如果您使用數據庫索引,它應該不會明顯變慢。但是如果你有兩個Jason Davises會發生什麼? UID很好,因爲你可以保證唯一性。

1

我用名字看到的主要問題不是查找速度,而是你不能從內布拉斯加州的奧馬哈和另一個來自西澳大利亞州珀斯的傑森戴維斯獲得傑森戴維斯的事實。

通過一切手段使用世界上可以看到的一切的名稱,但爲了確保唯一性,我會使用整數ID。這可能會加快數據庫查詢速度,但這對我來說會是次要的問題。不確定的使用字符串會給應用程序帶來太多的焦慮。

0

兩者都是錯誤的。你不想得到profile.php給出u = 12345作爲參數。你想獲得用戶12345的個人資料。所以使用/ profile/12345。

讀一些關於REST,它很酷:)

0

會是慢使用名稱查找個人資料[...]

如果你測試過它,你會發現它沒有足夠的差異值得打擾。如果你擔心表現,那麼這應該是最讓你擔心的事情。

相關問題