mysql - MySQL 中的长文本类型字段中是否存储任何类型(整数、文本、日期)?

标签 mysql database database-design entity-attribute-value database-optimization

我正在开发一个包含页面/帖子、自定义页面/帖子和自定义字段的 CMS。这些自定义字段将通过 UI 进行选择并附加到自定义页面。

例如,我们创建一个自定义页面/帖子“项目”,其中包含以下字段:描述、订单、价格和日期。

我不想为我拥有的每种页面类型使用一个表,我只想使用一个表来存储每个给定自定义字段的每个字段,问题是它们可能有不同的数据类型。 我的问题是,存储例如是一个坏主意(考虑性能)吗?通用长文本类型字段中的订单值?是否最好创建一个包含 3 个字段(日期、整数、文本)的“customvaluestable”,根据其数据类型存储自定义字段的值并将其余字段保留为空?

谢谢

最佳答案

从技术上讲,这是一个坏主意......实际上,这两种想法都是如此。您可能会认为“我不想一直修改表格”,但有一些含义:搜索字符串比搜索数字、日期……效率低,如果您想将所有内容放入文本字​​段,而不仅仅是会不会占用更多空间,搜索全部是字符串搜索。

你应该问自己的是:你真正想要实现的目标是什么?如果您希望将一些额外的任意数据与静态数据一起存储,您将不会像以前那样搜索......对该数据进行 json 编码,然后将其放入一个称为“customdata”的字段中管他呢。或者使用 nosql/keyvalue-store 开始!

当您想要搜索它时,请多加努力,看看 drupal 如何处理自定义字段。虽然很难看,但至少它们是一致的。数字应该存储在数字字段中。 (因为数字的字典顺序在字符串字段中真的很奇怪......)。

关于mysql - MySQL 中的长文本类型字段中是否存储任何类型(整数、文本、日期)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38609172/

相关文章:

c - Sqlite3 使用 C 从用户输入添加新行到表中

mysql - 数据库架构多对多对多

database-design - 在每个数据库引擎中存储二进制标志/ bool 值的最佳方法是什么?

ruby-on-rails - 将 SQL 查询转换为 Arel 时遇到问题

php - mysqli 更新不起作用

java - 如何生成唯一ID

php - 如何阻止 MySQL 错误输出到浏览器以包含数据库密码?

php - Laravel 4 中具有特定角色的用户的额外字段

database - 在数据库列中存储分隔列表真的那么糟糕吗?

创建函数时MYSQL服务器出错