1
1
列作为其行的一部分存储。行作为页面的一部分存储。如果您需要一行中的一列来读取整行,实际上您需要读取该行所在的整页。可能有数千行,包括所有列。希望该页面还有其他您感兴趣的行,并且不会浪费阅读时间。 这就是为什么柱状数据库在分析中变得如此流行的原因。它们分别存储列。它们仍然将值存储在页面中。因此,您从磁盘上读取了该列的数千行,但在分析中,您可能对所有或大部分这些行感兴趣。这样,您可以拥有数百个列,但只能读取正在查询的列。
MySQL没有Columnstore。所以,你需要一个选择。
首先,将大字段放在一个单独的表中,这是您已经提到过的。
第二,可以使用覆盖索引。
如果你索引
不过,这有点笨拙,因为覆盖索引需要覆盖您知道感兴趣的列。
在实践中,你的领域足够小,在它真正成为问题之前不需要关注它。储存起来比较明智
|
2
0
“列作为行的一部分存储。”——是和否。所有“小”列都存储在行中。但是
“在页面上打印所有具有所有这些字段的书籍”--这可能排除了大列吗?那样的话
是的,是的 可能的 做“垂直分区”来分割大项目,但这主要是重复InnoDB已经做的事情。别麻烦了。 我们应该在竞技场上讨论这些事情。我的评论到目前为止只触及表面。为了更深入地挖掘,我们需要看到真实的模式和一些重要的查询。我想有些问题会比较慢。对于100M行,改进一个查询有时会损害另一个查询。 |
hello_programmers · Mysql从其他表输出一列 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 1 年前 |
Kugelfisch · 用php为数据库加密数据 1 年前 |