首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php web下整型vs字符串型mysql设计方法

php web下整型vs字符串型mysql设计方法
EN

Stack Overflow用户
提问于 2013-04-22 17:47:38
回答 2查看 175关注 0票数 0

我有一个包含2个字段的产品表。

1)产品id int-7位

2)产品名称

产品名称只能有27个不同的值,如香蕉、苹果等

现在我想知道对我的web服务器资源最好的方法是什么。我是说我应该用1,2,3,...值还是字符串值?

~编辑我的表大约有一百万行,并且随着时间的推移稳步增加。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-22 17:50:40

为了提高可读性,您应该对name字段使用VARCHAR。如果你必须在9个月后回到这个问题上来,并记住1是一个苹果还是一个香蕉,你将会有很大的困难。

因为我假设您必须打印出产品名称,所以您基本上是在PHP或MySQL中选择字符串。SELECT * FROM fruit WHERE product_name = 'Banana'SELECT * FROM fruit where product = 7,然后是foreach($fruits as $fruit): if $fruit['id'] = $row['product'] { return $fruit['name']; } endforeach;

从PHP数组array(1 => 'apple', 2 => 'banana' ... 27 => 'eggplant');赋值也会比在VARCHAR字段上使用MySQL SELECT语句使用更多的开销。您在数据库端获得的任何性能都将在应用程序端损失五倍。

票数 1
EN

Stack Overflow用户

发布于 2013-04-22 17:53:40

使用VARCHAR。

或者,如果您绝对确定产品将保持静态,您可以使用ENUM来节省一些空间,但如果只有27行,那么节省的空间就不会很多。

但是,如果需要引用其他表中的产品,请考虑创建surrogate key (自动递增整数),以节省引用表中的空间(与重复的VARCHAR产品名称或7位产品ID相比)。

注意:“节省空间”不仅仅是存储空间-更小的数据意味着更少的I/O和更有效的缓存和给定数量的RAM。这对于小表格来说并不重要,但在大表格中可能会有所不同(例如,如果你有一个引用产品的大“订单项目”表格)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16144030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档