php 包含数组 vs mysql 查询 : good idea?

标签 php mysql sql

我有一个带有几个子数组的二维数组(大约 30 个,子数组有 10 个元素)。 我需要经常从数组中获取基本数据,我有一个函数可以在我的脚本周围返回它(或部分)的内容。该函数如下所示:

function get_my_data($index = false){
$sub0 = array(
   'something' => 'something',
   'something else' => 'else',
   ...
    );
$sub1 = array(
   'something' => 'something different',
   'something else' => 'else different',
   ...
    );
...
$sub30 = array(
   'something' => 'something 30 times different',
   'something else' => 'else 30 times different',
   ...
    );
$data = array($sub0,$sub1,$sub2,...,$sub30);
if($index !== false)
return $data[$index];
else
return $data;
?>

然后我使用 include 调用它:

<?php
include 'my_data.php';
$id = $_GET['id'];
$mydata = get_my_data($id);
...
?>

我这样做是因为当我开始这个项目时,我没有想到我会有超过 10 个子阵列,而且我也没有想到我需要让它动态化。事实上,现在我必须添加一个动态列(子数组的索引),在这种情况下使用数组声明并不是一个好主意。我立即想到使用数据库,传输数据并不困难,但是如果我这样做,那么我需要更改我的函数 get_my_data 并在其中插入一个查询,所以,因为它被调用了很多次,我会有很多查询,几乎我网站的每个脚本都有一个。我认为性能会最差(因为我的网站已经大量使用 mysql)。动态数据不会太频繁地改变(客户端这样做)。

我解决这个问题的思路是:

  • 将所有数据保存在数据库中,通过mysql查询获取,
  • 留在 php 端并使用文件来管理动态数据,
  • 在php端保留静态部分,在mysql数据库中添加逻辑连接器(如子数组中的'id'索引)和id列,并在mysql上获取动态数据

我不想损失太多性能,你有什么意见或建议吗?

最佳答案

将这样的数据放入代码中是最糟糕的计划。您不仅会创建一大堆垃圾然后扔掉几乎所有垃圾,而且如果其中任何一个发生变化,维护起来就是一场噩梦。编辑源代码、将其 checkin 版本控制并部署它是对一些数据进行简单更改的大量工作。

至少以 JSON、YAML 或 XML 等数据格式存储它,以便您可以按需读取它并根据需要更改纯数据文件。

理想情况下,您将其放入数据库并在必要时对其进行查询。数据库旨在像这样存储、更新和保存数据。

您还可以将 JSON 存储在数据库中,MySQL 5.7 甚至为其提供了原生的列类型,这使得这种事情变得更加容易。

关于php 包含数组 vs mysql 查询 : good idea?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38556027/

相关文章:

php - PHP 中的 Redis session 忽略 php.ini 设置

php - 在 PDO PHP 脚本中两次使用相同的 POST 值 | mysql

php - cakephp 3.* 无法识别新的数据库列

java - 为什么我的 Apache Tomcat 不能执行简单的 JSP 选择数据库程序?

SQL - 指定的字母顺序

php - 如何在 PHP 中创建图像

mysql - 一次性从数据库中选择并删除条目

php - Woocommerce 中基于产品数量生成结帐字段的 ACF 转发器

sql - 使用 "select trim"时如何避免postgresql更改列名

sql - numeric(38,0) 作为主键列;好,坏,谁在乎?