php - 如何存储用户列表,并让用户知道他们在该列表中

标签 php mysql theory

我正在构建一个网站,用户可以将人员添加到他们的“列表”中。该列表属于用户,但我想知道在函数中存储/检索/循环该列表的最佳方法是什么,以向列表中的人员显示他们在那里以及谁创建了该列表。

因此,一旦创建了用户名列表,我会假设将其存储在 mysql 表字段中,然后编写一个函数来搜索该表以查找影响当前登录用户的任何列表。

我的问题有两个。首先,假设列表只是 a-z 0-9 以及连字符和下划线(用户名中没有空格,但用空格分隔),那么将其存储在 mysql 中的最佳字段类型是什么。其次,在多个列表中搜索用户名的最佳/最快方法是什么?

最佳答案

Varchar、索引和附加缓存。

您正在创建一个包含用户名和用户 ID 字段的用户表。然后创建一个表 user_relation,在其中组合用户 ID,以便获得匹配项。对所有外键关系放置索引。这应该会带来相当不错的性能提升:)

编辑一些用于设置的附加信息

表:用户 UserID - Int (8) - 主键,自动递增 名称 - 瓦卡 (30) 电子邮件地址 - Varchar (90) - 唯一

表:用户关系 ID - Int (8) - 主键,自动递增 UserID_Source - Int (8),索引(这是用户) UserID_Friend - Int (8),索引(这是用户的 friend /关系)

通过这种方式,您可以轻松存储与特定用户的关系。

要获取一些结果,请使用如下查询:

SELECT `User`.*, `User`.`UserID` AS `UserID_Source`
FROM   `User`
WHERE  `User`.`UserID` = `user_relation`.`user_id_source`

您可以通过 JOIN 扩展查询以直接获取关系匹配或使用另一个查询;)

关于php - 如何存储用户列表,并让用户知道他们在该列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1819048/

相关文章:

php - 忽略 mysql 搜索中的撇号

mysql - rpl_semi_sync_master_wait_point,AFTER_SYNC?

mysql - 使用 Unix TimeStamp 格式的数据计算每月行数的 SQL 查询

php - 我该如何解决这个 : The column 'created_at' conflicts with another column in the mapper

php - Datepicker 日期格式插入和0000-00-00

java - 从基类方法调用基类重写函数

php - 什么是语言结构?它是如何(理论上)在 C 中实现的?

sql - 加密数据库查询

php - 如何将 MySQL 代码转换为 PDO 语句?

php - 当任何单词包含时点赞查询