php - 专家对 mySQL 表中大量列的意见?

标签 php mysql

我正在创建一个工具,用于在 CMS 中编辑网页。 该工具的主要目标是为用户提供全面的灵 active 。因此,可以在其中编辑大量属性 - 像这样的属性(片段):

langbutton_menu_border_color_left 
langbutton_menu_border_width_left
langbutton_menu_border_style_left 
langbutton_menu_border_color_right

...你明白了。迄今为止,我有 238 个这样的属性,主要是整数和短字符串。 我现在必须为数据创建一个 mysql 表。我有几年的 web 开发经验,即使考虑将 238 列放入 mySQL 表中也是绝对的禁忌。但转念一想,我开始思考,为什么不呢?

这对我来说是目前最方便的事情,因为我正在集成这个新工具的 CMS 有一组现成的输入元素,这些元素与单个数据库列连接。存储属性的任何其他方式(例如将它们分组以便将“边框”属性存储在一个字段中)将需要对集合进行巨大的更改,我非常想避免这种情况 - 我在一个大项目中并且每天都在工作和晚上。

我会根据 XML 定义创建和更改表,这样我就可以管理一个包含 238 列的表。 存储效率并不重要——页面的预期数量不会超过 50-100。 除了使用主键一次加载一个页面外,我不需要对表进行任何查询。

那么,mySQL 专家们,有什么认真反对将这种数据存储在 238 列中的吗?您是否会遇到问题、指数级内存使用量等类似问题?

通常,我会将各种属性翻译成完整的 CSS 字符串,并构建可以解析和处理此类字符串的类——这会大大减少数量。但考虑到时间限制?

最佳答案

理论上,mySQL 现在限制在一个表中的 4096 列(考虑到其他约束,即默认 NULL 值等,稍微少一些)。所以,你有相当大的利润。 就我个人而言,在 Web 开发人员中,我尽量保持列数 < 50。我看到有 100 多列的表,它起作用了,但是维护这样的表非常困难。 如果您不必在该列上进行搜索,请考虑在 php 数组上进行序列化并将值存储在 TEXT 中。它更快、更灵活。

关于php - 专家对 mySQL 表中大量列的意见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1622262/

相关文章:

php - 在 Kohana 加入 OR

php - php 中的字符串与 javascript 中的字符串

php - 如何阻止用户打开服务器上的文件?

php - 如何一键保存在php/mysql中插入数据?

mysql - 过滤查询结果

php - 设置服务器,在/usr下找不到libmysqlclient

mysql - 在MySQL中选择分层数据

php - Zend 1 - SQL FROM 表达式别名

mysql - 使用单人表来存储和显示相关的家庭成员

php - 无限滚动 MySQL PHP jQuery