首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:长表vs宽表

问MySQL:长表vs宽表
EN

Stack Overflow用户
提问于 2013-04-16 07:19:28
回答 2查看 8.9K关注 0票数 10

哪个数据库表设计更有效(就查询性能而言)-长的还是宽的?

也就是说,这个

代码语言:javascript
复制
id size price
1  S    12.4  
1  M    23.1
1  L    33.3
2  S    3.3
2  M    5.3
2  L    11.0

与此对比

代码语言:javascript
复制
id  S     M     L
1   12.4  23.1  33.3
2   3.3   5.3   11.0

一般来说(我估计)这归结于GROUP BY和直接选择列之间的性能比较:

代码语言:javascript
复制
SELECT AVG(price) FROM table GROUP BY size

或

代码语言:javascript
复制
SELECT AVG(S), AVG(M), AVG(L) FROM table

第二个写起来有点长(就很多列而言),但是这两个的性能如何呢?如果可能,这些表格格式的优缺点是什么?

EN

回答 2

Stack Overflow用户

发布于 2013-04-16 07:38:00

第一个选项会产生更多的行,并且通常会比第二个选项慢。

然而,正如Deltalima也指出的那样,第一个选项更灵活。不仅是当涉及到不同的查询选项时,如果/当你有一天需要用其他大小、颜色等扩展表时也是如此。

除非您有非常大的数据集或需要超快的查找时间,否则使用第一个选项可能会更好。

如果您有或需要一个非常大的数据集,最好创建一个包含预先计算的汇总值的表。

票数 3
EN

Stack Overflow用户

发布于 2013-04-16 07:26:41

long在使用上更加灵活。例如,它允许您过滤size

代码语言:javascript
复制
SELECT MAX(price) where size='L' 

此外,它还允许在size和id上建立索引。这加快了GROUP BY和任何查询的速度,其中id和/或size等产品库存表连接了其他表。

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

https://stackoverflow.com/questions/16026226

复制
相关文章

相似问题

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