这是存储以下类型列表的更好方法:
array(
'category'=>array(
'key'=>'value',
'key'=>'value'
),
'category'=>array(
'key'=>'value',
'key'=>'value'
)
);
在MySQL中存储这些列表的更有效方法是lists.php
文件还是序列化条目?
答案 0 :(得分:2)
很好取决于你的mysql表结构:
但除此之外,为什么不创建两个表,一个存储类别,另一个存储引用该类别的键值对。
CREATE TABLE Categories (
CID INT,
***
PRIMARY KEY (CID)
)ENGINE=InnoDB;
CREATE TABLE KeyValues (
Category INT,
Key varchar(100),
Value varchar(100,
FOREIGN KEY Category REFERENCES Categories(CID)
)ENGINE=InnoDB;
您可以根据结构进一步规范化keyvalues表。我没有故意选择主键,因为它取决于你是否正常化你的表。添加自动增量主键也可以。
选择数据更容易,更快捷。当您有序列化数据时,如果您需要进行某种计算,首先需要抓住PHP端,取消序列化并进行计算,只需一个查询即可完成同样的事情。
答案 1 :(得分:1)
我建议您使用mysql,更易于维护,并且您可以轻松挑选所需的行,而无需将整个数组加载到内存中。 您也可以尝试使用像mongoDB这样的nosql数据库。
答案 2 :(得分:0)
除非您需要,否则不要使用数据库,这会增加不必要的开销,复杂性并引入新的故障点。在这种情况下,我将列表编码为PHP源数组。它将快几个数量级,并且更容易实现 - 您可以在几秒钟内完成此代码。在这种情况下,我认为使用数据库没有任何好处。存储600个元素阵列所需的开销可以忽略不计。如果您后来发现数组变得太大而不合理,或者需要经常更改,那么您可以将其移动到数据库中。不要过度设计它。