gpt4 book ai didi

mysql - 列的 SQL 开销

转载 作者:行者123 更新时间:2023-11-29 07:09:21 27 4
gpt4 key购买 nike

关于数据库设计的问题。如果我有 28 个 bool 值并且能够将它们添加为每行 28 个 bool 值或一个整数,哪一个会更快?哪种方法将使磁盘上的表大小保持最低?

这是在假设我需要的可以通过查询中的位掩码和其他二进制操作来完成的情况下进行的。

更新

如果是整数,查询可能会更长。获取该位的出现次数(在给定范围内)将类似于以下内容:

SELECT 
sum(FirstBit) as CountofFirst,
sum(SecondBit)/2 as CountofSecond,
sum(SecondBit)/4 as CountofThird,
...
FROM
(SELECT
intField & 1 as FirstBit,
intField & 2 as SecondBit,
intField & 4 as ThirdBit
...
FROM myTable
WHERE
intField <> 0)
WHERE
<within given range>

最佳答案

首先,任何有关优化和数据表示的行都需要提到数据库。每个数据库都有自己的存储此类信息的方式。

其次,数据的最佳表示方式取决于数据的使用方式。您的问题没有表明这一点。

第三,在大多数数据库中,数据库表本身并不占用磁盘空间。表包含行。行存储在页面上。并且页面存储在磁盘上。表所需的页数取决于许多因素,行大小肯定是其中之一。但它不是唯一的(该列可以为空吗?每页上都留有额外的空间)。

最后,您询问如何最小化磁盘大小。这取决于很多因素。然而,可以合理地假设在任何数据库中,4 字节整数都将具有最佳的缩放属性。在某些数据库中,28“位”(实际数据类型可能有所不同)可能占用相同的空间。

关于mysql - 列的 SQL 开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40388847/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com