大多数具有某种用户配置文件的网站都会执行以下操作:
profile.php?u=123445
要不然:
profile.php?u=jason.Davis
所以我很好奇,使用名称使用 php/mysql 查找配置文件会比使用数字查找配置文件记录更慢吗?
在每种情况下,字符串查找确实可能比数字查找慢。但差异是如此之小,以至于永远不会被注意到。除非您拥有大量用户。
但是看看 SO:他们两者都做。
http://stackoverflow.com/users/187606/pekka
用于极速数据库访问的数字。
漂亮的外观和搜索引擎可见性的名称。
两个名称没有冲突,因为 ID 是用来搜索记录的。
我认为这是两全其美的最佳选择。
不过,需要重写 URL。
该名称将更具可读性且更易于调试,但名称不能保证是唯一的,因此需要通过 uniqifier 进行扩充(我相信这实际上是一个单词,用于统一),例如将数字附加到末尾名字。
我看到使用名称的主要问题不是查找速度,而是您不能拥有来自内布拉斯加州奥马哈的 Jason Davis 和来自西澳大利亚珀斯的另一个 Jason Davis。
无论如何都要在世界上可以看到的所有内容中使用该名称,但为了确保唯一性,我会使用整数 ID。这也可以加快数据库查询的速度,但这对我来说是次要的问题。使用字符串是否会给您的应用程序带来太多的焦虑是值得怀疑的。
如果您使用数据库索引,它应该不会明显变慢。但是如果你有两个 Jason Davises 会发生什么?UID 很好,因为您可以保证唯一性。
两者都是错误的。你不想让 profile.php 给定 u=12345 作为参数。您想获取用户 12345 的个人资料。因此请使用 /profile/12345。
阅读一些有关 REST 的内容,这很酷 :)
使用名称查找个人资料会更慢[...]?
如果您对其进行了测试,您会发现没有足够的差异值得为此烦恼。如果您担心性能,那么这应该是您最不担心的事情。
如果名称是数据库中的一个键,那么查找时间应该不会相差太大,并且使用名称会给您提供更好看的 URL,所以我建议使用名称。