MYSQL中的高效存储,用于十六进制(或二进制)

时间:2015-08-11 18:25:58

标签: mysql database binary hex storage

我正在创建一个存储食品订单的数据库,我正在考虑最有效的存储方式。我认为十六进制是最有效的存储机制。

食品订单包括任何数量的食品,以及每种食品的任何添加。

所以,带有额外奶酪的芝士汉堡和带有额外意大利辣味香肠的披萨可以存储为

300050AF200010F

' F'作为逗号,用于分隔食品,第一个值' 3'和' 2'对应食品项目,中间的所有值代表各种浇头,以及每件商品的选择。

所以可以看作是 300050AF //芝士汉堡 200010F //比萨饼 500210B0F //任何可能的额外食品,以及此订单的顶部选择

食品可以是不同的长度,因为' F'逗号,因为有些项目比其他项目有更多的顶部选择

第一个问题是,这是最有效的存储方式吗?

第二个问题是MYSQL似乎没有十六进制数据类型,所以我必须将它存储为二进制,如果是这样,将实际数据中的各种值转换为二进制(Javascript?)的最有效方法是什么? ,以及MySQL二进制存储的效率如何?

另外,ENUM或集如何作为数据存储中位数进行比较?

2 个答案:

答案 0 :(得分:2)

磁盘空间很便宜:我认为你对“最佳”存储过于担心。最佳存储不仅占用空间最小,而且允许其他人浏览您的表或编程数据库以理解和正确操作数据。

十六进制不是存储机制,而是数字数据的表示。但是,您可能会以十六进制显示数字,二进制表示更“有效”。例如:值255可以存储在一个字节中,或以十进制表示为“255”,或以十六进制表示“FF”(或以八进制表示为“377”)。

但是,您所做的并不是以十六进制表示数据:您提出的代码使用字母“A” - “F”。十六进制“F”是15,而不是逗号。

了解您要完成的任务会很有帮助。如果您正在尝试学习数据库编程,那么您将走错路:使用您正在尝试学习的工具的设施,不要与它们作斗争。

答案 1 :(得分:1)

同意他人的意见。这对于它可能提供的性能来说实在是太过分了。

存储优化也伴随着读取权衡。因此,检查订单状态等查询不会是最佳的。

考虑到你有一个食物应用程序,你可能会有很多订单,通过它们查询可能会随着你的成长变成噩梦。