Php Mysql性能:序列化vs列
假设我有一个类似我在下面发布的数组,我需要将它存储在我的MySQL数据库中:Php Mysql性能:序列化vs列,php,mysql,arrays,Php,Mysql,Arrays,假设我有一个类似我在下面发布的数组,我需要将它存储在我的MySQL数据库中: Array( "Weight" => "10", "Height" => "17", "Usage" => "35" ); 序言: 我永远不会更新这些值 我永远不会基于这些值执行查询 长话短说,我只需要按原样存储和显示这个数组。实际上,我需要使用这些值来生成图形。现在我看到了两种可能的选择 选项1:即使我永远不会使用WHERE、ORDER BY、have。。。在这些值的条件下
Array(
"Weight" => "10",
"Height" => "17",
"Usage" => "35"
);
序言:
我永远不会更新这些值
我永远不会基于这些值执行查询
长话短说,我只需要按原样存储和显示这个数组。实际上,我需要使用这些值来生成图形。现在我看到了两种可能的选择
选项1:即使我永远不会使用WHERE、ORDER BY、have。。。在这些值的条件下,我将每个值分别存储在一个专用的列中—重量、高度、用途
选项2:我创建一个单列stats,在其中存储数组的序列化版本,然后,为了生成我的图,我在使用它之前取消序列化每一行
问题是:在有效性和性能方面,存储此阵列的最佳方法是什么
在我看来,第二种方法是最好的,但是假设在这个过程中涉及到很多行和元素。我不知道用PHP对一个由20个元素组成的数组进行100行的非序列化,或者读取存储在20列中的普通值是否更快更方便,因为我需要非常频繁地同时保存很多值
我永远不会更新这些值
我永远不会基于这些值执行查询
在您完成代码并将其存储为序列化值后,系统将要求您执行查询以更新权重大于10的任何内容
只需将它们存储在自己的列中—这不仅可以证明代码的未来性,而且从长远来看,它更易于使用,占用的驱动器空间也更少
我永远不会更新这些值
我永远不会基于这些值执行查询
在您完成代码并将其存储为序列化值后,系统将要求您执行查询以更新权重大于10的任何内容
只需将它们存储在它们自己的列中-这不仅可以证明代码的未来性,但是,从长远来看,它更易于使用,占用的驱动器空间更少。如果使用单独的列,则不需要取消序列化来创建图形这一简单事实应该足以证明选项1为什么要将其存储在数据库中?在数据库中存储数据的全部意义在于,您可以对其执行查询。否则,最好在代码中设置常量中的值。我总是选择选项1简单的事实是,如果使用单独的列,则不需要取消序列化来创建图形,这足以证明选项1的合理性,为什么还要将其存储在数据库中?在数据库中存储数据的全部意义在于,您可以对其执行查询。否则,最好在代码中设置常量值。我总是选择选项1。我明白你的意思。当然,当我们谈论显示数据时,选项1更好,但是存储部分呢?让我解释一下。我要做的插入查询比选择查询多得多。事实上,我只需要在客户想要查看图形时选择并显示这些值,但显然他们不会花一生的时间来查看图形。另一方面,在自动检查期间,我需要频繁地保存新值。总之,这将是插入到20列中,而不是插入到具有序列化数据的单个列中。也就是说,你仍然推荐选项1吗?我会的。SQL是为这样的插入和读取而设计的——但它不是为序列化数据而设计的,这一点从对它的严重缺乏支持就可以明显看出。也许使用新的MySQL 5.7+JSON功能?否则,请使用行和关系数据。谢谢大家。今天我学到了一些新东西。让我们来看看专栏,不要过度思考。我明白你的意思。当然,当我们谈论显示数据时,选项1更好,但是存储部分呢?让我解释一下。我要做的插入查询比选择查询多得多。事实上,我只需要在客户想要查看图形时选择并显示这些值,但显然他们不会花一生的时间来查看图形。另一方面,在自动检查期间,我需要频繁地保存新值。总之,这将是插入到20列中,而不是插入到具有序列化数据的单个列中。也就是说,你仍然推荐选项1吗?我会的。SQL是为这样的插入和读取而设计的——但它不是为序列化数据而设计的,这一点从对它的严重缺乏支持就可以明显看出。也许使用新的MySQL 5.7+JSON功能?否则,请使用行和关系数据。谢谢大家。今天我学到了一些新东西。让我们跟着专栏走,不要过度思考。