当前位置: 代码迷 >> Oracle管理 >> 【DBA】Oracle 创建表不需要设置主键 Primary、目录 Index、唯一 UNIQUE吗
  详细解决方案

【DBA】Oracle 创建表不需要设置主键 Primary、目录 Index、唯一 UNIQUE吗

热度:404   发布时间:2016-04-24 04:16:43.0
【DBA】Oracle 创建表不需要设置主键 Primary、索引 Index、唯一 UNIQUE吗
看到一个游戏服务器 Oracle DBA 创建的所有表没有一个表有设置主键、索引、唯一,NOT NULL的。
Oracle数据库字段都不需要设置主键 、 索引 、 唯一
还是Oracle 设置了这些性能上也没有多大区别
------解决方案--------------------
主键,索引,唯一是否设定由设计者决定,默认都是没有的。

设置和不设置的性能当然会有区别,这方面大部分数据库都是相通的。
------解决方案--------------------
引用:
看到一个游戏服务器 Oracle DBA 创建的所有表没有一个表有设置主键、索引、唯一,NOT NULL的。
Oracle数据库字段都不需要设置主键 、 索引 、 唯一
还是Oracle 设置了这些性能上也没有多大区别

好比在一本书查找东西,如果书的页码很少,有没有目录其实没什么影响。如果书的页码很多,目录就显得至关重要
------解决方案--------------------
引用:
Quote: 引用:

主键,索引,唯一是否设定由设计者决定,默认都是没有的。

设置和不设置的性能当然会有区别,这方面大部分数据库都是相通的。


用来做游戏服的数据库,数据很多。但是那名DBA确实没有设置主键,而且ID的值还可以相同。

ID值相同就不能只基于ID设置主键了,主键值必须唯一。至于他们为什么没有设置主键,这个就搞不懂了,不知道是不是跟他们业务有关系。
------解决方案--------------------
也许人家是高手
------解决方案--------------------
兼职dba呗。。
------解决方案--------------------
不知道是你们业务特殊需求,不设置主键、索引、唯一键。
建议在设计表时候要设计主键、索引、唯一键,这对性能有很大影响的,如果数据量不大的情况下不觉
如果数据量大的话,性能明显感觉低。
------解决方案--------------------
表原则上是有主键的,这得依据业务上的。
------解决方案--------------------
引用:
用来当成主键的字段没有设置为主键,也没有加索引,更没有加唯一。
而且ID的值是拼出来的,而不是自动递增序列产生的。
比如一个无限极层级分类。
表字段:ID,UPID,NAME,
ID字段的记录是根据UPID 
------解决方案--------------------
  ( SELECT MAX(ID)+1 FROM TB WHERE UPID=$UPID)生成的


TB是现在讨论的表吗? 这个ID有没有其他表引用,如果没有现在还可以规范一下,解决数据冲突后设置成主键。

------解决方案--------------------
引用:
Quote: 引用:

看到一个游戏服务器 Oracle DBA 创建的所有表没有一个表有设置主键、索引、唯一,NOT NULL的。
Oracle数据库字段都不需要设置主键 、 索引 、 唯一
还是Oracle 设置了这些性能上也没有多大区别

好比在一本书查找东西,如果书的页码很少,有没有目录其实没什么影响。如果书的页码很多,目录就显得至关重要

比喻很恰当
  相关解决方案