mysql - 查找许多布尔匹配的结构 - MySQL
问题描述
除其他事项外,我还需要在表格中每行存储一组固定的 28 个布尔参数。我正在使用 MySQL。
然后,我需要查询以返回一个或多个特定布尔值何时为记录,特别是按 id 选择一行,然后选择它们共有true
的任何其他行。
这看起来很简单,而且我确信我可以编写如上所述的代码 - 这不是我在这里要求的,但我从未实现过这种设置。
重点是有效地查找匹配项——但更新为零,记录的寿命有限,最终会被批量删除。
问题:
- 除了 28 个单独的 bool 列之外,还有其他存储方式吗?也许是某种二进制?我对二进制做的不多,在数据库中为零。
- 查询我应该查看的许多列是否有任何特定的性能问题?
- 如何索引一个正在搜索 28 个单独列的表?甚至值得尝试吗?
解决方案
我的回答,希望对你有帮助:
- 您可以将这 28 个布尔值存储在派生表中,并通过某种 id 进行引用,然后将
INNER JOIN
. 可能每个布尔值都有一个名称,所以一行就像id, name, value
. - 不,列的数量如果不是问题,但每个列的大小是。当然,返回的数据越少,网络流量就越少。
- 如果您使用第二个表,则只需要一个索引。
如果您的表将不断更新和删除,您可以定期OPTIMIZE TABLE
对它们执行。
推荐阅读
- scikit-learn - 如何将数据分成 3 个部分,其中一个不会使用?
- asp.net - 在 asp.net core 中使用 AutoMapper 的问题
- php - 如何从 docker-compose.yml 运行 php 文件
- java - 防止一个列表视图中的项目在另一个列表视图中打开活动?
- .net-core - WebApi 指定 Content-Type 为 application/json
- amazon-s3 - 如何使用 aws cli 设置 S3 存储桶中文件夹的权限?
- javascript - 使用 recharts ( Barchart ) 为响应式图表设置高度和宽度
- bash - VScode docker - 无法附加到运行 Docker 容器的 bash
- php - 每时每刻更新数据
- machine-learning - 在亚马逊美食评论数据集上实施的朴素贝叶斯问题