哪个数据库表设计更有效(就查询性能而言)-长的还是宽的?
也就是说,这个
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与此对比
id S M L
1 12.4 23.1 33.3
2 3.3 5.3 11.0一般来说(我估计)这归结于GROUP BY和直接选择列之间的性能比较:
SELECT AVG(price) FROM table GROUP BY size或
SELECT AVG(S), AVG(M), AVG(L) FROM table第二个写起来有点长(就很多列而言),但是这两个的性能如何呢?如果可能,这些表格格式的优缺点是什么?
发布于 2013-04-16 07:38:00
第一个选项会产生更多的行,并且通常会比第二个选项慢。
然而,正如Deltalima也指出的那样,第一个选项更灵活。不仅是当涉及到不同的查询选项时,如果/当你有一天需要用其他大小、颜色等扩展表时也是如此。
除非您有非常大的数据集或需要超快的查找时间,否则使用第一个选项可能会更好。
如果您有或需要一个非常大的数据集,最好创建一个包含预先计算的汇总值的表。
发布于 2013-04-16 07:26:41
long在使用上更加灵活。例如,它允许您过滤size
SELECT MAX(price) where size='L' 此外,它还允许在size和id上建立索引。这加快了GROUP BY和任何查询的速度,其中id和/或size等产品库存表连接了其他表。
https://stackoverflow.com/questions/16026226
复制相似问题