【发布时间】:2011-02-13 19:06:25
【问题描述】:
我们有一个products 的 mySQL 数据库表。我们正在利用缓存层来减少数据库负载,但我们认为将需要存储在缓存层中的实际数据最小化以进一步加快应用程序的速度是个好主意。
数据库中对访问者可见的所有产品都附有价格:
价格存储在另一个名为 prices 的表中。有多个价格类别,具体取决于每个访客(客户)适用的折扣级别。不时会有活动,这意味着每种产品都有特价。特价存储在名为specials 的表中。
- 制作一个将表绑定在一起的临时表是不是很糟糕?
它只有必要的信息,当然会被缓存。
-------------|-------------|------------
| productId | hasPrice | hasSpecial
-------------|-------------|------------
1 | 1 | 0
2 | 1 | 1
通过这样做,很容易知道特定产品是否真的有价格,而不必在每次应该列出或展示产品时遍历完整的 prices 或 specials 表。
- 临时表是 Web 应用程序常见的东西还是只是糟糕的设计?
【问题讨论】:
-
不错的主意。 SQL Server 有聚集索引视图,Oracle 有物化视图。它们实际上都可以满足您的需求。我很想知道 MySQL 是否有类似的结构,但我对此表示怀疑。
-
嗨,利文。感谢您的意见。
标签: mysql performance database-design scalability temp-tables