我们说我在网站上销售游戏,歌曲或专辑。仅在性能方面,最好只有一个表格具有字段'类型'或每种类型一张桌子?字段几乎相同。
感谢。
答案 0 :(得分:1)
这完全取决于您期望拥有多少条记录,以及您打算运行哪种类型的查询。如果您要查看每种类型的数百万,那么将它们拆分为单独的表可能会更高效,但如果向正确的列添加索引,那么拥有一个表就绝对没问题。< / p>
为简单起见,单个表很好 - 您只需使用type列过滤所需的项目类型即可。只要确保你索引该列,否则一旦你开始获得大量记录,它在性能方面会非常糟糕。但是,如果不知道你认为从长远来看会有多少项目,那么估计它是一件非常困难的事情。
也许拥有更多DBA知识的人可以在这里说话,但我会说
正如@Sander Visser所指出的,如果您希望能够通过所有待售物品进行全文搜索,那么单个表格会更好。尝试在3个表上执行此操作会有点棘手,因为您最有可能最终得到3个单独的查询(或联合查询),这可能比单个表搜索慢。
鉴于您正在考虑正常操作的1表和3表实现之间的非常小的时间差异,我建议使用单表方法。
答案 1 :(得分:0)
实际上,如果您的担忧是性能与简单,您不必选择。您可以使用两个分区的优势:
这是MySQL manual:
由于满足给定WHERE子句的数据只能存储在一个或多个分区上,因此可以大大优化某些查询,这会自动从搜索中排除任何剩余的分区。
在您的情况下,如果您有3种类型,则可以按如下方式定义分区:
CREATE TABLE items
(
...
type INT NOT NULL
)
PARTITION BY HASH( type ) PARTITIONS 3;
参见示例here