gpt4 book ai didi

php - MySQL : For big storage, 我应该使用单个重列还是包含数千行的表?

转载 作者:行者123 更新时间:2023-11-30 00:34:33 25 4
gpt4 key购买 nike

我为一个网站构建了一个类似的系统,但我陷入了困境。

我有一个表,其中存储了所有可以点赞的项目。称之为“项目表”。

为了保持服务器的速度,我必须:

  • 在项目表中添加一列。这意味着每次用户喜欢某个项目时,我都必须在一个字符串内进行搜索(使用 PHP 中的正则表达式),其中注册了所有喜欢该项目的用户的 ID。这是为了验证相关用户之前是否已经喜欢过该项目。在本例中,我在 html 上显示了一个不同的按钮。

Problem > If I have (by chance) 3000 liked on an item, I fear the string to begin very big and heavy to regex each time ther is a like on it...

  • 添加一个特定的新表(LikedBy),并分别记录每个点赞者的ID、项目的名称以及点赞的状态(点赞或不点赞)。

Problem > In this case, I fear for the MySQL server with thousand of rows to analyze each time a new user like one popular item...

服务器版本:5.5.36-cll-lve MySQL Community Server (GPL) by Atomicorp

我应该将负载放在 PHP 脚本还是 MySql 数据库上?什么是性能最高(且可扩展)的?

如果由于某些原因,我的问题没有意义,有人可以告诉我正确的方法吗?谢谢。

最佳答案

您必须创建另一个表,称为likes_table,其中包含id_user intid_item int,如果您喜欢的话,应该这样做您提出的第一个解决方案您的数据库将不会标准化,您将来将面临太多问题。

要计算类似的数量,您只需

 SELECT COUNT(*) FROM likes_table WHERE id_item='id_item_you_are_looking_for';

要了解谁喜欢什么:

 SELECT id_item FROM likes_table WHERE id_user='id_user_you_are_looking_for';

不需要任何正则表达式,并且您的数据库已经很好地规范化,可以轻松找到数据。您可以告诉 mysql 为 id_userid_item 建立索引,使它们在 likes_table 中唯一,这样您的所有查询都会运行得更快

关于php - MySQL : For big storage, 我应该使用单个重列还是包含数千行的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22280963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com