gpt4 book ai didi

Mysql存储序列化数组

转载 作者:可可西里 更新时间:2023-11-01 07:21:38 25 4
gpt4 key购买 nike

我有 3 个表:

  1. Regions 表,其中包含 1500 个城镇。
  2. 包含 1800 个类别的类别表。
  3. 包含企业的公司表。

我需要做的是获取一个城镇,例如 Brimingham,并使用我们的主公司表在一个数组中列出哪些类别有企业,因此我们没有在数组中存储任何没有企业的类别布里明汉。

我遇到的问题是要存储的数组的大小,当我用序列化数组填充所有城镇时,我什至无法打开表格进行浏览。请参见下面的数组示例:

a:9:{s:8:"Bailiffs";s:1:"1";s:20:"商业顾问";s:1:"1";s:25:"汽车修理厂和机械师";s:1:"1";s:35:"养殖牲畜和其他动物";s:1:"2";s:19:"时尚配饰";s:1:"1";s:6 :"酒店";s:1:"1";s:20:"邮局服务";s:1:"1";s:13:"学校州";s:1:"1";s: 14:"木工匠";s:1:"1";

谁能提出替代解决方案?

干杯

最佳答案

我建议采用一种完全不同的方法来完全解决存储问题,并使您的应用程序更加高效。存储可以从数据库中检索到的充满信息的序列化数组是多余的,而且效率非常低。这里最好的方法是规范化您的数据。

您应该创建第四个表,可能称为“region_categories”,这将是一个简单的查找表:

CREATE TABLE region_categories (
regionId int unsigned not null,
categoryId int unsigned not null,
PRIMARY KEY(regionId,categoryId)
);

现在,不是将所有内容都保存到数组中,对于每个城镇/地区,您应该使用该城镇中的类别填充此表。您的数据量非常小,因为您存储的只是一对 ID。

当需要检索给定区域的类别时,您只需运行一个简单的 SELECT 语句:

SELECT category.*
FROM region_categories AS rc LEFT JOIN categories AS c ON rc.categoryId=c.categoryId
WHERE rc.regionId=[whatever region you're dealing with]

现在您可以遍历结果,您将拥有该地区的所有类别。

关于Mysql存储序列化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1130434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com