5

大多数具有某种用户配置文件的网站都会执行以下操作:

profile.php?u=123445

要不然:

profile.php?u=jason.Davis

所以我很好奇,使用名称使用 php/mysql 查找配置文件会比使用数字查找配置文件记录更慢吗?

4

7 回答 7

12

在每种情况下,字符串查找确实可能比数字查找慢。但差异是如此之小,以至于永远不会被注意到。除非您拥有大量用户。

但是看看 SO:他们两者都做。

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

用于极速数据库访问的数字。

漂亮的外观和搜索引擎可见性的名称。

两个名称没有冲突,因为 ID 是用来搜索记录的。

我认为这是两全其美的最佳选择。

不过,需要重写 URL。

于 2009-12-24T02:58:52.223 回答
2

该名称将更具可读性且更易于调试,但名称不能保证是唯一的,因此需要通过 uniqifier 进行扩充(我相信这实际上是一个单词,用于统一),例如将数字附加到末尾名字。

于 2009-12-24T02:59:35.297 回答
1

我看到使用名称的主要问题不是查找速度,而是您不能拥有来自内布拉斯加州奥马哈的 Jason Davis 和来自西澳大利亚珀斯的另一个 Jason Davis。

无论如何都要在世界上可以看到的所有内容中使用该名称,但为了确保唯一性,我会使用整数 ID。这也可以加快数据库查询的速度,但这对我来说是次要的问题。使用字符串是否会给您的应用程序带来太多的焦虑是值得怀疑的。

于 2009-12-24T02:59:57.113 回答
0

如果您使用数据库索引,它应该不会明显变慢。但是如果你有两个 Jason Davises 会发生什么?UID 很好,因为您可以保证唯一性。

于 2009-12-24T02:59:49.897 回答
0

两者都是错误的。你不想让 profile.php 给定 u=12345 作为参数。您想获取用户 12345 的个人资料。因此请使用 /profile/12345。

阅读一些有关 REST 的内容,这很酷 :)

于 2009-12-24T04:03:52.733 回答
0

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

如果您对其进行了测试,您会发现没有足够的差异值得为此烦恼。如果您担心性能,那么这应该是您最不担心的事情。

于 2009-12-24T10:23:34.283 回答
-1

如果名称是数据库中的一个键,那么查找时间应该不会相差太大,并且使用名称会给您提供更好看的 URL,所以我建议使用名称。

于 2009-12-24T02:58:52.647 回答