在数据量和访问量剧增条件下保持数据库效率[2]
有些人在网上说再增加一张中介表可以提高速度
中介表 linker (uid mid)
中介表是这样用的 每次当一个人发了一篇帖子 则将所有订阅他的人(uid)和这篇帖子的mid插入中介表里 例如 uid= 的人有 个订阅者 分别为 则当uid= 的人发了一篇帖子mid= 时 就应往linker表里插入这些数据 ( ) ( ) ( ) 这样 对一个uid而言 linker表和msg表就形成了一对一的关系 查询的时候 只需级联linker表和msg表就行了 如下 (还是以查uid= 的为例)
) SELECT * FROM msg linker WHERE msg mid=linker mid and linker uid= ;
这样乍看好像比 )要快一些 因为就一个uid而言linker表和msg表是一对一的关系 而方法 )的却是一对多的关系 而且 有些人认为 就算不这么看 因为方法 )在插入时比方法 )多做了很多操作 所以查询的速度应该能比方法 )快 至少不会比方法 )慢
我实际测试下来的结果是 方法 )比方法 )慢了至少 倍的时间 而且数据量越大 慢得就越多 测试结果
a) user有 条 friend有 条 msg有 条时 平均查询时间
方法 )是 s 方法 )是 s )比 )慢 倍
b) 当msg有 条时 方法 )是 s 方法 )是 s )比 )慢 倍
(以上结果都是在建了索引之后的)
lishixinzhi/Article/program/SQL/201311/16303
2024-10-28 广告