另建主键,还是用表中原有的主键?大家应该都遇到过这种问题:
比方说有一个表,其中的a列+b列+c列可以唯一标示一个实体。
我们可以使“a列+b列+c列”设为主键,也有人喜欢另外建一个主键用的类型也是各异,有人喜欢用char,有人喜欢用int,
有人喜欢用dec,有人喜欢identity.这在我们建表的时候可能司空见惯了。
不知各位喜欢怎样设主键?还有这其中的学问有前辈可以指教一下吗?
比方说有一个表,其中的a列+b列+c列可以唯一标示一个实体。
我们可以使“a列+b列+c列”设为主键,也有人喜欢另外建一个主键用的类型也是各异,有人喜欢用char,有人喜欢用int,
有人喜欢用dec,有人喜欢identity.这在我们建表的时候可能司空见惯了。
不知各位喜欢怎样设主键?还有这其中的学问有前辈可以指教一下吗?
对于主表可用一唯一的整形字段作为主键。从表可用外键+记录生成时间作为作为主键。
因为很多天然的主键都是char类型或varchar类型呀。
整型不错,char,和整型+char也不错,如果再不行,就加个日期型,查询时好用
我还有个习惯,不知好不好
我喜欢把不能重复的列设置为主键。请朋友议议
我反对用char类型作主键,为用char类型做主键不但占用空间大,而且效率较其他类型低。
对于主表可用一唯一的整形字段作为主键。从表可用外键+记录生成时间作为作为主键。-----------------------------------------------------------这样不妥,如果在同一时间大批量多人此,或者系统倒入数据,会出现主键冲突。
一是用“本地编号(int)+区号(int)”做主键,在全局范围内唯一表示一个实体。
如:00001223 + 16
二是用可以全局编码的(char)做主键
如:"1600001223"不知诸位以为怎样做好?或有其他的高见?
还是用oracle的序列来生成主键好点。用char还是用char都可以,习惯上用char多些。
用“本地编号(int)+区号(int)”做主键不但太复杂,而且在纪录跨区号转移时,主键会有问题。
1.合理使用索引 索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率。现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构。索引的使用要恰到好处,其使用原则如下: ●在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引。 ●在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引。 ●在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就无必要建立索引。如果建立索引不但不会提高查询效率,反而会严重降低更新速度。 ●如果待排序的列有多个,可以在这些列上建立复合索引(compound index)。 ●使用系统工具。如Informix数据库有一个tbcheck工具,可以在可疑的索引上进行检查。在一些数据库服务器上,索引可能失效或者因为频繁操作而使得读取效率降低,如果一个使用索引的查询不明不白地慢下来,可以试着用tbcheck工具检查索引的完整性,必要时进行修复。另外,当数据库表更新大量数据后,删除并重建索引可以提高查询速度。 2.避免或简化排序 应当简化或避免对大型表进行重复的排序。当能够利用索引自动以适当的次序产生输出时,优化器就避免了排序的步骤。以下是一些影响因素: ●索引中不包括一个或几个待排序的列; ●group by或order by子句中列的次序与索引的次序不一样; ●排序的列来自不同的表。 为了避免不必要的排序,就要正确地增建索引,合理地合并数据库表(尽管有时可能影响表的规范化,但相对于效率的提高是值得的)。如果排序不可避免,那么应当试图简化它,如缩小排序的列的范围等。
============================
@* .☆ / */ . / * . ☆/ *。
◢◣。 ◢◣。
◢★◣。 ◢★◣。
◢■■◣。 ◢■■◣。
◢■■■◣。 ◢■■■◣。
︸︸||︸︸ !!︸︸||︸︸
愿您有快乐的每一天 ^_^!!0
在ORACLE(我仅仅用过ORACLE :( )中,如果字段为空,则索引会变得无效,可以用触发器控制关键字段是否为空。
这样主键不会重复,而且可以方便的让分布式数据并库
问题多不胜数。
用SEQUENCE生成主键,数值型,比较好用,问题也少。
首先明白主键的含意。主键是在数据表中一条记录的唯一标志。正因为它如此重要,主键相对于表中其它字段来说要做到相对稳定,在一条记录的整个生命周期内都不应该发生变化。如果用面向对象的观点来解释,有点com对象中的GUID.
这个唯一编号由客户端来生成,用户不可见,具体的算法可以根据当前用户,当前时间,甚至用GUID(有的数据库可以支持).重复的几率非常小可,可以不考虑主键重复问题。
优点1:通过这种设计,主键的获取依赖于客户端,而不是服务器,可以提高并发性.
2.减少表间的依赖关系。如对于有主细关系的表,如果主表资料发生变化不影响细表的关联.