gpt4 book ai didi

mysql - 哪个更好地控制状态和执行查询?一个 TINYINT 列、一个 BIT(8) 列或八个 BIT(1) 列

转载 作者:行者123 更新时间:2023-11-29 01:46:45 25 4
gpt4 key购买 nike

我假装使用位图设置状态 ( like this guy ) 并在我的表上进行按位查询。我应该使用什么列类型?我将如何执行选择?

This article让我有点担心是否会接受这个想法。我希望能够为字段编制索引、进行联接以及我会用普通字段做的所有其他事情。

所以如果我有一个包含以下行的表格:

        |1234 5678|
|Id|Name|State |
|01| xxx|0111 0001|
|02| yyy|1101 1001|
|03| zzz|0101 0011|

我想找回那些行:

StateColumn 234 = 101 and StateColumn 8 = 1 
That would be => (0101 0001)

我应该取回 ID 为 02 和 03 的行。

进行这种搜索是个好主意还是我疯了?

最佳答案

虽然位掩码方法除了给 friend 留下深刻印象之外确实有一些用途(可能会减少存储需求),但我强烈建议不要将它用于需要查询的数据。原因是你不能有效地索引它。大多数(如果不是全部)查询都必须使用完整扫描来解决。很久以前,我真的被这个问题烧坏了,因为我在一个太小的数据集上测试了它,同时独自在数据库中。添加几十万行,十几个用户,它就是无法扩展。

因此,除非您有一些特殊要求,否则我建议您将每条数据放在它自己的列(位或整数)中,并根据您的查询需要使用适当的索引(单列或复合列)。

(在我看来是正确的)方法的“缺点”是增加了存储空间(由于单独的索引),但除非您有数百万行,否则它几乎不会引起注意。

如果由于某些原因对您不起作用,还有其他选项,它们利用数据中的模式来构建高效的搜索结构。但它们都是有代价的(严重受限的灵 active 、多用户环境中的锁定问题等等)。

我的建议:将每条数据存储在它自己的列中。这就是数据库的用途,它将利用数据库的所有优势。除了最异常扭曲的情况外,这也恰好是在所有情况下表现最好的方法。

关于mysql - 哪个更好地控制状态和执行查询?一个 TINYINT 列、一个 BIT(8) 列或八个 BIT(1) 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4975537/

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