2009-12-24 49 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

会是慢使用名称查找个人资料[...]

如果你测试过它,你会发现它没有足够的差异值得打扰。如果你担心表现,那么这应该是最让你担心的事情。

相关问题