代码之家  ›  专栏  ›  技术社区  ›  dfilkovi

MySQL和PHP数组存储问题

  •  1
  • dfilkovi  · 技术社区  · 16 年前

    $array = array(1 => 45.76, 2 => 67.56, 3 = 79.23 ..... 1440 => 20.22);
    

    我现在面临的是一个有700MB数据的表,这意味着在不久的将来会出现一些严重的问题。

    4 回复  |  直到 16 年前
        1
  •  1
  •   Hugh Bothwell    16 年前

    不要以这种方式存储数组。数组语法将带来巨大的开销。

    最好为每个条目使用一行,如下所示:

    TABLE `array_entries` (
        `Index` INT UNSIGNED NOT NULL,
        `Value` DOUBLE,
        `Name` CHAR(8) COMMENT 'name of the array the entry belongs to',
        PRIMARY KEY (`Name`, `Index`)
    );
    

    将允许您在一个表中存储多个数组,并且只加载所需的内容(或者如果您愿意,可以加载整个数组)。

    Name 通过指向表的(整数)外键 arrays

        2
  •  4
  •   Martijn    16 年前

    更多信息可能会有所帮助:

    • 这是什么意思?你是如何使用它的?
    • 它多久会改变一次?

        3
  •  1
  •   karim79    16 年前

    看一看 gzdeflate 用于压缩字符串。文档中的示例:

    <?php
    $compressed = gzdeflate('Compress me', 9);
    echo $compressed;
    ?>
    

    所以在你的情况下,这样的东西可能会起作用:

    <?php
    $compressed = gzdeflate(serialize($array), 9); //or var_export?
    echo $compressed;
    ?>
    
        4
  •  0
  •   Nicolas    16 年前

    在现代硬件上,MySQL表中700MB的数据看起来并不那么糟糕。当然,最好尽量减小表的大小,这样你就可以使用PHP提供的压缩函数之一。 Read on here for more informations .

    我经常使用 gzdeflate

    推荐文章