Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql性能:序列化vs列_Php_Mysql_Arrays - Fatal编程技术网

Php Mysql性能:序列化vs列

Php Mysql性能:序列化vs列,php,mysql,arrays,Php,Mysql,Arrays,假设我有一个类似我在下面发布的数组,我需要将它存储在我的MySQL数据库中: Array( "Weight" => "10", "Height" => "17", "Usage" => "35" ); 序言: 我永远不会更新这些值 我永远不会基于这些值执行查询 长话短说,我只需要按原样存储和显示这个数组。实际上,我需要使用这些值来生成图形。现在我看到了两种可能的选择 选项1:即使我永远不会使用WHERE、ORDER BY、have。。。在这些值的条件下

假设我有一个类似我在下面发布的数组,我需要将它存储在我的MySQL数据库中:

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功能?否则,请使用行和关系数据。谢谢大家。今天我学到了一些新东西。让我们跟着专栏走,不要过度思考。