0

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

1)产品的id int-7digits

2)产品名称

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

现在我想知道我的网络服务器资源的最佳方法是什么。我的意思是我应该使用 1,2,3,... 值还是字符串值?

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

4

2 回答 2

1

为了便于阅读,您应该使用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 数组分配值也将比在字段上的 MySQL语句array(1 => 'apple', 2 => 'banana' ... 27 => 'eggplant');使用更多的开销。您在数据库方面获得的任何性能都将在应用程序方面损失五倍。SELECTVARCHAR

于 2013-04-22T09:50:40.040 回答
1

使用 VARCHAR。

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

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

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

于 2013-04-22T09:53:40.493 回答