ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

数据库扩展字段设计在&大数据查询筛选优化

2022-07-15 12:36:21  阅读:301  来源: 互联网

标签:12 mongodb 数据库 扩展 查询 筛选 学生 ID


简单模式:

学生表(ID,姓名,年龄,生日)

学生扩展字段表(ID,扩展字段名称(班级、专业),编码, 扩展字段类型(int,string,arr等))

扩展字段存值表(学生表ID,扩展字段表编码,值)

现在添加一个学生张三{1,张三,22,1999-12-12,八班,计算机科学与技术},这条数据应该怎么插入数据库呢?

首先:将{1,张三,22,1999-12-12}插入学生表。然后在存值表插入两条数据。

这种模式可以随意扩展学生表的字段。

表结构图:

 

 

复杂模式:

 如下图:

 

 加了一级人员类别,扩展字段作用到人员类别上,这样更加灵活。

类似于电商中的商品分类-扩展设计。每个商品分类都可以有自己的扩展字段

 

问题:

当学生表数据非常多的时候,查询的时候要先查主表,然后还有根据主表的每一条记录去查存值表中的数据,查询效率慢。

如果筛选条件是字段扩展表中的字段,那么查询的速度将会更慢,因为要先查子表数据,根据子表中取出的学生表ID(还要去重)再去主表中in查询,这效率简直太低了。

 

解决问题

解决复杂模式设计方案问题

用mongodb来存储人员表和人员扩展字段值表中的数据。

因为mongodb不是关系型数据库,列可以随时扩展,列也可以内嵌数组或者对象。

同时mongodb的查询速度也是非常快速的,对扩展字段的筛选,甚至内嵌数组值的筛选都是非常快速的。

对于不懂mongodb的可以在网上了解它的应用场景。

个人认为mongodb在业务上有扩展字段这个场景就非常适合。

 

标签:12,mongodb,数据库,扩展,查询,筛选,学生,ID
来源: https://www.cnblogs.com/eggTwo/p/16480959.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有