V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  YVAN7123  ›  全部回复第 5 页 / 共 15 页
回复总数  288
1  2  3  4  5  6  7  8  9  10 ... 15  
274 天前
回复了 0xsui 创建的主题 程序员 普通高等教育真的越来越不值钱
物以稀为贵, 多了肯定就不值钱了呗。
我理解你的问题是关于如何设计一个数据库模型和编写高效的查询语句,以满足文章可见性在多个区域设置下的需求。你提到了两种设计方案,我会就每种方案分别进行讨论,并提供一些可能的解决方案。

### 方案一:在 t_article 表中加字段

这种方案中,你在文章表 t_article 中加入了两个字段,分别表示可见城市和不可见城市的 ID 列表。这样的设计在简单的情况下是可行的,但在复杂的查询和处理情况下可能会变得繁琐。

**查询的复杂性:** 当涉及多层级的区域关系以及访客的属地归属时,编写查询可能变得复杂。需要处理访客属地与文章可见性的交叉匹配。

**解决方案:** 如果冗余数据量不大,你可以尝试在程序层面进行一些数据预处理,将一些常见的查询结果缓存,以减轻数据库查询压力。

### 方案二:建立中间表 t_article_to_city

这种方案通过建立一个中间表 t_article_to_city ,记录文章和可见城市/不可见城市的关系。这种做法在处理复杂的多对多关系上更加灵活,但查询可能会涉及多表连接。

**查询的复杂性:** 查询涉及到多个表的连接,可能会增加查询的复杂性和性能开销。

**解决方案:** 使用合适的索引来优化查询性能,尽可能避免全表扫描。合理使用缓存,以及数据库优化技术,如合理的索引设计、查询优化等。

### 建议的优化方案:

1. **索引优化:** 无论哪种方案,都要确保你的表上有合适的索引。对于 t_article_to_city 表,可以在 `article_id` 和 `city_id` 列上建立复合索引,以加快查询速度。

2. **缓存:** 考虑使用缓存来缓存常用的查询结果,这可以减轻数据库的负担。例如,可以缓存某个访客在某个时间点下有权访问的文章列表。

3. **存储过程和函数:** 在数据库中,你可以使用存储过程或函数来封装复杂的查询逻辑,使得业务逻辑更集中,同时减少网络传输开销。

4. **数据库分区:** 如果数据量较大,可以考虑使用数据库分区技术,将数据按照一定规则分散存储,以提高查询性能。

5. **合理拆分数据:** 根据实际业务情况,合理拆分数据表,避免一张表的数据量过大。

6. **测试和优化:** 在设计数据库结构和编写查询语句后,一定要进行充分的测试和性能优化,确保系统在不同访问情况下都能够正常高效运行。

总的来说,数据库设计和查询性能优化是一个复杂的过程,需要根据实际情况进行权衡和调整。在设计过程中,要考虑数据规模、查询频率、数据变更频率等因素,以及合理使用数据库技术和优化手段来满足业务需求。同时,将一些复杂的业务逻辑尽可能地移到程序层面,以减轻数据库的压力。
275 天前
回复了 taco1wang 创建的主题 汽车 吉利星越 l 这款车咋样, 各位
@TimPeake 再狠狠心加几万上 model Y
读博 (赌博),直接去当大学教授
276 天前
回复了 tanxianjia 创建的主题 生活 V 友相亲帖
@guiyun 可以买新城
277 天前
回复了 tanxianjia 创建的主题 生活 V 友相亲帖
有没有天津的
277 天前
回复了 tanxianjia 创建的主题 生活 V 友相亲帖
@guiyun 兰州工资也很高啊
是不是可以类比,
有一个人在吸毒,然后你去给他来了一刀,
你最后还是恶意伤人
@xgfan 哈哈哈哈 下车走了就是肇事逃逸,不下车就百分之 50 被找到。聪明
宇宙中心五道口,房租就是不便宜啊
天津瑟瑟发抖
281 天前
回复了 liqinliqin 创建的主题 优惠信息 9.9 元, WIFI+BLE,复古钨丝灯,摔不烂
@Varobjs 无痕模式打开
282 天前
回复了 YVAN7123 创建的主题 问与答 特斯拉为啥卖的这么好?
@crayygy 蓝牌特斯拉都是韭菜
282 天前
回复了 YVAN7123 创建的主题 问与答 特斯拉为啥卖的这么好?
@DearMark 美国华为, 但是受众却是中国人。
1  2  3  4  5  6  7  8  9  10 ... 15  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2490 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 41ms · UTC 14:02 · PVG 22:02 · LAX 07:02 · JFK 10:02
Developed with CodeLauncher
♥ Do have faith in what you're doing.