【发布时间】:2010-12-29 17:03:26
【问题描述】:
大多数拥有某种用户资料的网站要么会这样做:
profile.php?u=123445
否则:
profile.php?u=jason.Davis
所以我很好奇,使用名称通过 php/mysql 查找配置文件会比使用数字查找配置文件记录更慢吗?
【问题讨论】:
大多数拥有某种用户资料的网站要么会这样做:
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 看起来更好看,所以我建议使用名称。
【讨论】: