gpt4 book ai didi

php - 为 PHP 中的数据检索优化的 MySQL 数据库设计

转载 作者:行者123 更新时间:2023-11-29 02:08:49 24 4
gpt4 key购买 nike

我是一个相当新的 MySQL 开发人员,并且正在开始一个我可以做的项目,其中有一些初步的建议......

我正在创建一个数据库,该数据库将主要保存一定数量的项目(1-5k 之间)以及与每个项目关联的大约 40 个 bool 变量。然后用户将输入他们对这 40 个值的选择,系统的工作是确定“最佳”匹配项。这可能是匹配所有 40 个变量的项,或者如果不存在,则匹配 39 个变量等。

所以,如果有人有时间,请问几个问题!

  1. 根据我使用 MySQL 的经验,对于这种大小的数据库,将数据拆分到单独的表中并没有显着的速度优势。更多表的开销太大,无法对整体性能产生任何可行的影响。因此,我建议简单地创建一个包含 40 列和最多 5000 行的大表来存储所有信息(表锁定不是问题,因为所有查询都是 SELECT 查询)。这是否符合其他人的想法和经验?
  2. 返回“最佳”匹配项的最有效方法是什么?这甚至可能仅通过数据库结构和 SQL 命令实现,还是我必须简单地将整个数组返回给 PHP 并在其中运行一种启发式函数以确定最佳匹配?<

感谢您的宝贵时间和帮助!

最佳答案

单表肯定是对的。您可以将多达 64 个 bool 变量存储到单个 BIGINT 列中,作为一个“掩码”,每位一个 bool 值,并以极快的速度计算匹配 BIT_COUNT(~(the_column ^ user_preferences) ) 这将计算列和掩码之间有多少位相等,给出了用户的偏好(如果 PHP 给你处理 64 位整数的问题,你可以使用两个 32 位的列,将两个位计数相加仍然会非常快)。

关于php - 为 PHP 中的数据检索优化的 MySQL 数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/958412/

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