小编典典

检查MySQL行中的值

sql

我将用户ID值存储在由|分隔的表字段中 (user_id1 | user_id2 | user_id3 | user_id17)。

在某些时候,将在此字段中添加和删除用户ID。

如何检查当前用户ID是否存在于字段中或不使用查询?当然,它必须是完全匹配的。不能寻找user_id1和发现user_id17

我知道我可以使用SELECT查询,展开该字段,然后使用,in_array但是如果有一种使用查询的方法,那就更好了。


阅读 145

收藏
2021-04-22

共1个答案

小编典典

为尚未阅读该主题的用户存储论坛的价值(这是一个坏主意)将无法扩展。如果确实需要,可以 用另一种方法来做 ,因为您还将遇到与新用户注册后必须向
数据库中的每个主题 添加条目相关的问题。

代替前面的关系表,请尝试如下进行操作:1

Table: topics
+----+-------+------+-----
| id | title | body | ...
+----+-------+------+-----
| 1  | xyz   | .... | ...

Table: replies
+----+-------+------+-----
| id | title | body | ...
+----+-------+------+-----
| 3  | xyz   | .... | ...

Table: read_topics
+---------+----------+
| user_id | topic_id |
+---------+----------+
| 2       | 1        |

当您拥有大量用户时,您的方法虽然可能(并且更容易想象)开始崩溃,但是可伸缩性是您在注释中提到的。这里的另一个问题是,采用这种方法会造成 巨大的
性能损失,因为在进行另一笔交易之前,您必须从数据库中提取数据,对其进行拆分,然后进行操作和重新组合。您还存在 同时由两个CGI线程写入表的
问题。玩的开心…

您正在使用一种用于数据操纵,排序,数据关系和存储的工具,因此将其用于所有工具,而不仅仅是作为信息的垃圾场。

1.我距离数据库优化的专家还很遥远,很可能有比这更好的方法。测试!

2021-04-22