使用高效 AND 搜索进行标记的数据库设计
要设计一个支持高效 AND 搜索的标记数据库,我们需要考虑以下要求:
传统上,JOIN 可用于实现标记功能,但在处理大量标记时,这种方法变得不切实际。要克服此限制,请考虑以下解决方案:
实体属性值 (EAV) 模型
EAV 模型将数据分为三个表:
此模型通过为值表中的每个标签创建单独的列来实现高效的搜索查询。每个项目在“值”表中可以有多行,每个项目对应一个标签。要执行 AND 搜索,只需在所有所需标签列上指定条件即可。
位集方法
此方法使用位集来表示标签是否存在对于每个项目。为每个标签分配一个位,并且每个项目都有相应的位集。要执行 AND 搜索,可以对指定标签的位集使用二元运算(例如按位 AND)。
性能测试参考
进一步了解见解,请参阅以下资源:
请注意,引用的来源提供了具体的性能对 MySQL 的评估,自发布以来可能提高了其全文索引能力。
以上是如何设计数据库以对标签进行高效的 AND 搜索?的详细内容。更多信息请关注PHP中文网其他相关文章!