哪个 table 归类需要最少 space 和最少 table 大小?

which table collation takes least space and least table size?

我是 MySQL 的新手。 在分类广告管理数据库中,我有一个名为 "expired".
的 table,我选择它的数据类型为 Boolean 实际上是 tinyint(1).
此字段存储发布的广告(广告)是否过期。
因为这个字段将只存储这两个数字:01,现在的问题是对于这个 space 哪个排序规则最少=34=]?
当前 table 排序规则是 utf8-general_ci.
一般来说,我需要知道 table 排序规则和 table 大小之间是否存在关系?
我用谷歌搜索了“数据库整理对数据库大小的影响”,但没有得到任何相关和有用的结果!

"字符集"是字符的编码;这可能是您想要的术语。

“排序规则”控制字符的比较方式;它不涉及 space.

“数字”既不涉及“字符集”也不涉及“排序规则”。

存储 yes/no (true/false) 值的典型方法是在 TINYINT 中,它占用 1 个字节。您的 tinyint 示例之后的“(1)”没有提供任何信息,很快就会从语法中删除。

如果您有很多 true/false 值,请考虑使用 SET 数据类型。它最多可以在 8 个字节中打包 64 个值。

“ascii”和“latin1”是 single-byte 个字符。 latin1 可以处理有限数量的重音字母 -- 正如在西欧语言中发现的那样。

“utf8mb4”应该用于一般字符支持。还是一个英文字母占1个字节,欧洲其他地区占1或2个字节,一个汉字占3-4个字节。

对于单个布尔值,没有比 tinyint 更小的了。对于少量的布尔值,我建议每个使用一个 tinyint —— 这是 small 数量的 space 与代码复杂性之间的权衡。对于大量的布尔值,SETBINARY(n)n是字节,不是位)or some size ofINT`加上掩码操作。

对于仅限于西欧语言的应用程序,latin1 很方便,稍微更紧凑的字符串。除此之外,使用 utf8mb4.

注意每个“字符集”都有多种“排序规则”;默认排序规则 通常 合适。

我喜欢应用的经验法则:如果我看不到至少 10% 的改进(在 space 或速度或其他方面),请继续。也就是说,寻找其他可能带来更多改进的东西。 (Andy 的评论是我 RoT 的另一种说法。)