【发布时间】:2010-01-13 15:12:43
【问题描述】:
在我正在使用 PHP/MySQL 开发的社交网络上,我有一个朋友页面,它会显示用户拥有的所有朋友,就像大多数网络一样。我在 MySQL 中有一个朋友表,它只有几个字段。 auto_ID、from_user_ID、to_friend_ID、日期
我想让朋友页面有几个不同的结果排序选项,
通过 auto_ID 基本上按照添加朋友的顺序。它只是一个自动增量 id
新朋友按日期,将使用日期字段
根据朋友的名字,将有一个按字母顺序排列的列表。
按字母顺序排列是我需要一些建议的地方。我将有一个字母 A-Z 的列表,当用户单击 K 时,它将显示以 K 开头的所有用户名,依此类推。诀窍是它需要快速,因此在用户表上执行 JOIN 不是一种选择,尽管大多数人会认为它很快,但这不是我想要执行此操作的性能。我的一个想法是在我的友谊表中添加一个额外的字段并将用户名的第一个字母存储在其中。用户可以随时更改那里的名称,因此我必须确保在用户更改名称的任何时候更新可能的数千条记录。
有没有更好的方法来做到这一点?
【问题讨论】:
-
你能解释一下无法加入吗?如果您在主键上添加索引(无论如何都应该存在),则连接不会很慢。这是数据库的优化目标。
-
除非您打算只显示 ID 列表,否则无论如何您都需要连接到另一个表进行显示。只需确保为数据使用正确的联接类型即可。
标签: php mysql alphabetical social-network-friendship