【DBA】手游数据库设计为什么第二种方法更优越? 本帖最后由 default7 于 2014-07-17 15:42:36 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 个人感觉,比较赞同楼主的做法。因为游戏是游戏,渠道是渠道,对应是对应,很清晰明了。我想dba的想法会是从提高数据的运行效率考虑的,可以减少表的关联,能提高存储过程的执行时间。 现在用的是DBA的设计思路。然后运行SELECT AGENTNAME,COUNT(AGENTNAME) AS TT FROM TB_AGENT GROUP BY AGENTNAME ORDER BY TT DESCSELECT GAMEID,COUNT(GAMEID) AS TT FROM TB_AGENT GROUP BY GAMEID ORDER BY TT DESC //很多TT都是大于1的,有的甚至100多了另外1)如果表不加主键、不加索引可以提高速度和性能吗?2)去获取视图的数据的话不用交表,Oracle性能没有这么差吧,两个交表就不行?。。 感觉有时候冗余也不完全是坏事吧,何必在意一些细节,能满足需求,有同等或更优的执行效率就更佳了。既然dba说那样做就那样做吧,咳咳~~~ 其实我觉得楼主的设计是对的,你那个DBA是打酱油,原因如下:1. 某些情况下,即使是OLTP数据库,冗余也是允许的,但你那个场景不需要冗余,完全可以用视图代替,而且性能也有保证2. 那个DBA没有考虑到数据一致性的问题, 比如说,如果agent的名字发生变化,应怎样保证更新是正确的?更进一步说,如果给agent增加额外的资料,那岂不傻眼了?3. 至于索引的问题,像你那几张表,查询的次数会远远高于增删改的次数,在这种情况下,使用索引所付出的负面代价仅仅是额外的存储空间,却带来更好的查询性能,尤其是相关的查询频率比较高的情况下。如果是我的话,我还会加上外键约束,以避免代码可能插入垃圾数据的情况出现。冗余是可以的,但不可以把允许冗余作为低级的表结构设计的借口 导入数据问题 如何写过滤数据SQL语句 帮我同学问个oracle触发器的问题 高手指点:安装oracle8 dbms_random.value 好慢 对于"继承"关系的两个表的该如何操作? 求一个嵌入java的sql批处理! (在线)这样的一个简单存储过程,竟然编译不通过,大家帮我看看... 请教 ORA-12638: 身份证明检索失败 windows 2003 环境下 oracle 9i 迁移到10g r2(求教) 请教大侠,oracle 触发器能对二进制数据进行操作吗?
然后运行
SELECT AGENTNAME,COUNT(AGENTNAME) AS TT FROM TB_AGENT GROUP BY AGENTNAME ORDER BY TT DESC
SELECT GAMEID,COUNT(GAMEID) AS TT FROM TB_AGENT GROUP BY GAMEID ORDER BY TT DESC
//很多TT都是大于1的,有的甚至100多了另外
1)如果表不加主键、不加索引可以提高速度和性能吗?
2)去获取视图的数据的话不用交表,Oracle性能没有这么差吧,两个交表就不行?。。
1. 某些情况下,即使是OLTP数据库,冗余也是允许的,但你那个场景不需要冗余,完全可以用视图代替,而且性能也有保证
2. 那个DBA没有考虑到数据一致性的问题, 比如说,如果agent的名字发生变化,应怎样保证更新是正确的?更进一步说,如果给agent增加额外的资料,那岂不傻眼了?
3. 至于索引的问题,像你那几张表,查询的次数会远远高于增删改的次数,在这种情况下,使用索引所付出的负面代价仅仅是额外的存储空间,却带来更好的查询性能,尤其是相关的查询频率比较高的情况下。如果是我的话,我还会加上外键约束,以避免代码可能插入垃圾数据的情况出现。冗余是可以的,但不可以把允许冗余作为低级的表结构设计的借口