当前位置: 首页 > wzjs >正文

做 在线观看免费网站移动互联网开发的学习心得300字

做 在线观看免费网站,移动互联网开发的学习心得300字,品牌策划服务,开发小程序多少费用深入解析多选字段的存储与查询:从位运算到数据库设计的最佳实践 前言 在实际开发中,我们经常会遇到多选字段的存储和查询需求。比如城市多选、标签多选等场景。本文将分享一个实际项目中的解决方案,从数据库设计到查询实现,希望…

深入解析多选字段的存储与查询:从位运算到数据库设计的最佳实践

前言

在实际开发中,我们经常会遇到多选字段的存储和查询需求。比如城市多选、标签多选等场景。本文将分享一个实际项目中的解决方案,从数据库设计到查询实现,希望能给大家带来一些启发。

问题背景

在一个系统的填单界面中,有一个城市多选字段,数据如下:

  • 1: 北京
  • 2: 上海
  • 3: 广州
  • 4: 深圳
  • 5: 成都
  • 6: 武汉
  • 7: 西安

需求:

  1. 如何存储用户的多选数据?
  2. 如何实现多选查询(比如查询包含北京或成都的记录)?

解决方案

方案一:位运算存储

这是最优雅的解决方案,使用位运算来存储多选数据。

1. 存储设计
CREATE TABLE form_data (id BIGINT PRIMARY KEY,city_flag INT COMMENT '城市多选标记',-- 其他字段
);
2. 存储实现
public class CityConstants {public static final int BEIJING = 1 << 0;    // 1public static final int SHANGHAI = 1 << 1;   // 2public static final int GUANGZHOU = 1 << 2;  // 4public static final int SHENZHEN = 1 << 3;   // 8public static final int CHENGDU = 1 << 4;    // 16public static final int WUHAN = 1 << 5;      // 32public static final int XIAN = 1 << 6;       // 64
}// 存储示例
int cityFlag = CityConstants.BEIJING | CityConstants.CHENGDU; // 17
3. 查询实现
-- 查询包含北京或成都的记录
SELECT * FROM form_data 
WHERE (city_flag & (1 | 16)) > 0;-- 查询同时包含北京和成都的记录
SELECT * FROM form_data 
WHERE (city_flag & (1 | 16)) = (1 | 16);

方案二:JSON数组存储

如果数据库支持JSON类型,也可以使用JSON数组存储。

1. 存储设计
CREATE TABLE form_data (id BIGINT PRIMARY KEY,cities JSON COMMENT '城市多选JSON数组',-- 其他字段
);
2. 存储实现
// 存储示例
String cities = "[1, 5]"; // 表示选择了北京和成都
3. 查询实现
-- MySQL JSON查询
SELECT * FROM form_data 
WHERE JSON_CONTAINS(cities, '1') OR JSON_CONTAINS(cities, '5');

方案三:关联表存储

使用中间表存储多选关系。

1. 存储设计
CREATE TABLE form_data (id BIGINT PRIMARY KEY,-- 其他字段
);CREATE TABLE form_data_city (form_id BIGINT,city_id INT,PRIMARY KEY (form_id, city_id)
);
2. 查询实现
-- 查询包含北京或成都的记录
SELECT DISTINCT f.* 
FROM form_data f
JOIN form_data_city fc ON f.id = fc.form_id
WHERE fc.city_id IN (1, 5);

方案对比

方案优点缺点适用场景
位运算存储空间小,查询性能好最多支持32/64个选项选项数量固定且较少
JSON数组灵活,易于扩展查询性能较差选项数量不固定
关联表最灵活,支持复杂查询需要多表关联需要复杂查询场景

最佳实践建议

  1. 选择建议

    • 如果选项数量固定且较少(<32),推荐使用位运算方案
    • 如果选项数量不固定,推荐使用JSON数组方案
    • 如果需要复杂的多选查询,推荐使用关联表方案
  2. 性能优化

    • 位运算方案:建议给city_flag字段建立索引
    • JSON方案:MySQL 8.0+可以使用函数索引
    • 关联表方案:确保关联字段都有索引
  3. 代码实现建议

    • 使用枚举或常量类管理选项值
    • 封装查询方法,避免直接写位运算
    • 添加数据验证,确保存储的值合法

总结

多选字段的存储和查询有多种方案,每种方案都有其适用场景。在实际项目中,我们需要根据具体需求(如选项数量、查询复杂度、性能要求等)来选择合适的方案。位运算方案虽然实现简单,但要注意选项数量的限制;JSON方案灵活但要注意查询性能;关联表方案最灵活但需要多表关联。

思考题

  1. 如果选项数量超过64个,你会选择哪种方案?为什么?
  2. 在多选查询时,如何优化查询性能?
  3. 如何设计一个通用的多选字段处理框架?

欢迎在评论区分享你的想法和经验!

参考资料

  1. MySQL位运算文档
  2. MySQL JSON函数文档
  3. MySQL优化指南
  4. MySQL索引优化指南
  5. MySQL JSON数据类型

文章转载自:

http://pCum5QhS.rrqbm.cn
http://kWyFuyih.rrqbm.cn
http://4WANipZK.rrqbm.cn
http://aXe8hq61.rrqbm.cn
http://3Ni8v795.rrqbm.cn
http://WzouwuVN.rrqbm.cn
http://8vNQwXJd.rrqbm.cn
http://Kh1pyZLJ.rrqbm.cn
http://9LnTNwl8.rrqbm.cn
http://WsKNU9Yj.rrqbm.cn
http://YP3GrcxX.rrqbm.cn
http://YeQed7aA.rrqbm.cn
http://4kxdjzX3.rrqbm.cn
http://p9CTQvRb.rrqbm.cn
http://s0ucK5zj.rrqbm.cn
http://iHeYG02I.rrqbm.cn
http://wetJACbt.rrqbm.cn
http://3SEmKkp1.rrqbm.cn
http://LT3MOzAf.rrqbm.cn
http://lxwNqhGM.rrqbm.cn
http://Z0s2qilD.rrqbm.cn
http://pZMdW0po.rrqbm.cn
http://TQOwPDDD.rrqbm.cn
http://oKtfb8mi.rrqbm.cn
http://75FEyavm.rrqbm.cn
http://0msd2GkU.rrqbm.cn
http://UQKplw7N.rrqbm.cn
http://BIIgf5w1.rrqbm.cn
http://PUToXX4D.rrqbm.cn
http://D8JP6WbZ.rrqbm.cn
http://www.dtcms.com/wzjs/653181.html

相关文章:

  • 互联网网站样式用dw设计网站怎么做
  • 运动网站模板北京市建设资格执业中心网站
  • 罗湖网站建设价格wordpress源代码如何在本地编辑器
  • 建站工具上市网站开发 手机 电脑
  • 制作网页网站教程章丘做网站优化
  • 辽宁省建设银行网站服装品牌策划方案
  • 做网站的实践报告煤棚网架加工厂
  • 网站开发与维护竞赛竞价恶意点击报案
  • 三个律师做网站合适吗朝阳网络公司怎么样
  • 江西宗杰建设工程有限公司网站东莞南城网站设计
  • 太仓住房与城乡建设部网站WordPress显示加载时间
  • wordpress更新慢合川网站优化
  • iis新建网站无法浏览任意的关键词或网站做引流
  • 做网站在线视频如何添加wordpress 盗链
  • 买微单的网站建设seo推广怎么样
  • 云南网站建设公司有哪些重庆室内设计学校
  • 用网站做简历模板怎么用域名进网站
  • 建设海外网站网页站点的用途
  • 北京网站设计公司hlh成都柚米科技15一二三年级手工
  • 网站标签span温室网站建设
  • 给医院做网站赚钱吗网站备案 法规
  • 网站建设公司织梦模板网站模板演示
  • 会议网站建设恺策网优 营销型网站建设品牌服务商
  • 品牌网站建设最佳大蝌蚪长沙市天心区城乡建设局网站
  • 网站好做吗专业微信网站建设报价
  • 网站开发(定制)合同 模板做网站多钱
  • 安庆做网站的公司网站报价书
  • 上饶网站建设多少钱有哪些微信开发公司
  • 路由器通过域名解析做网站wordpress西班牙语
  • 网站开发开发需求文档网站建设请示文件