关键词: 标签 检索 数据库 位运算 查询 算法
嗯,直接上干货。
算法:
1. 标签表数据需包含一个标签索引字段 tagIndex ,整数类型
2. 检索数据表 dataTable 需包含一个标签组合值字段 tagValues ,整数类型
3. 主要换算: 标签值 = 2 ^ tagIndex , 标签组合值 tagValues = 标签值1 + 标签值2 + ... ... + 标签值n
4. 存储算法:
当操作检索数据记录,设定标签时,将标签组合值写入 tagValues 字段
5. 查询算法:
5.1 将查询条件(标签可多选)换算成标签组合值 tagSearchValue
5.2 查询语句 select * from dataTable where (tagValues & tagSearchValue) = tagSearchValue
注意点:
1. 因为部分数据库整型数据类型的长度限制,建议标签索引不要大于32
2. 若标签必须用到32个或更多,可分组/分级
说明:此算法可将查询字段降低至一个,查询开销降低一个数量级,
欢迎来讨论: zhu_1976 @ 163.com