php - 将购物袋数据存储到 mysql 数据库中的最有效方法

标签 php mysql performance

将购物袋中的 session 数据(数组)存储(和检索)到 mysql 数据库中的最有效方法是什么?以便访客在下次访问时取 repo 物袋中的元素。

我现在需要存储的是:唯一的包 ID - 产品 ID - 和添加的日期时间(到 Cron 旧包)。

我正在考虑使用简单的“加密算法”将 bagID 存储到 cookie 中。 因此用户可以在不同的浏览器/计算机上拥有不同的包。

我正在考虑的选项:

  1. 使用一张表将bag session数组进行杀菌或json_encode后存入Data列:

    BAGS
    -----
    bagID               | data | date_added         
    int (AUTO_INCREMENT)| text | datetime
    
  2. 像这样使用这两个表:

    BAGS
    -----
    bagID               | date_added         
    int (AUTO_INCREMENT)| datetime
    
    BAGS_CONTENT
    -----
    ID (relate to bagID)| productID (list all products in the bag)
    int                 | int(10)
    

我正在考虑使用简单的“加密算法”将 bagID 存储到 cookie 中。 因此用户可以在不同的浏览器/计算机上拥有不同的包。

性能最佳的选项是什么?会有明显的性能差异吗?还是其中一个选项不好?

在选项 1 中,在 bagID 上使用主键是否明智?
在选项 2 中,在 bagID 上使用主键并在 ID 上使用外键是否明智?

最佳答案

我喜欢选项 #2 的想法,bagID 应该是一个很好的主键。

我有两个问题:如何将用户绑定(bind)到购物袋?一个用户可以拥有多个购物袋吗?

我的做法是向 bags 表添加一个 customerID(每个用户的唯一标识符)。但是如果一个用户只能有一个购物袋,那么你根本就不需要 bagID,你可以通过 customerID 来索引它。

关于php - 将购物袋数据存储到 mysql 数据库中的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8696451/

相关文章:

php - 了解嵌套的 PHP 三元运算符

mysql - 如何使用组合索引进行昂贵的聚合查询?

mysql - 如何使用 Eloquent ORM 计算多个表中的结果

android - ORM性能: is greenDAO faster than ORMLite?

php - 自动替换每个文件中的第一行

centos - PHP 从构建中安装 httpd 而不是 FPM

PHP OOP 和 MySQL

java - 由于插入查询中的单引号导致的错误

java - Java 性能从 1.4 到 1.6 的巨大差异

c++ - 避免 Eigen 的内存分配