外键影响性能? 听说大的项目都不用外键的,性能问题,数据的完整性不在数据库上做而是通过程序来做,是这样吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我喜欢外键,保证数据的完整性.后期运行也减少BUG的出现. 如果数据量大,数据库表很多,那么这样的项目一般不会建立外键。也就是说一般的那种ERP项目都不会建立外键或者建立比较少的外键,除非此项目数据量少或者数据要求非常规范,不然,没有必要建立外键。其实,在业务里面体现外键,这样才是更有效率的做法,我觉得 建表时我就从来没建过外键约束。假如某个表中引用 USER 的 ID,那这个字段就叫 USER_ID,但是不会去建立与 USER 表的外键约束。数据完整性全部由程序控制。系统庞大,数据表众多的话更不应该建外键约束了,这样只会使这些表的结构变得更加不可维护 外键的处理主要在数据层考虑如下因素: 1. 一对多级联查询(这个简单啦,不就是select命令吗) 2. 级联更新(如果使用自增长的ID就可不考虑) 3. 级联删除(先进行级联查询,再逐个删除) 4. 级联置空(根据需求情况而定) 5. 其他复杂的定制操作(如连表操作等) http://blog.csdn.net/miraclestar/archive/2010/08/17/5819185.aspx我转载的文章,你看看把~~外键效率问题 奇怪的问题 Java编程 JAVA读取EXCEL2007和2003版出现的问题 把这个普通form变成struts的form 是否该删除这套记录? 工程中,多个类共享一个log实例对象,还是每一个类单独定义自己的log实例对象啊? Mysql问题(10055) Struts中在地址栏中输入.jsp时,ActionServlet是如何执行的? SWT FileDialog怎么在打开的对话框中选中多个文件? maven 搭建 ssm框架 求助Java调用C#WebService Struts2 中的session使用问题
也就是说一般的那种ERP项目都不会建立外键或者建立比较少的外键,除非此项目数据量少或者数据要求非常规范,不然,没有必要建立外键。
其实,在业务里面体现外键,这样才是更有效率的做法,我觉得
外键的处理主要在数据层考虑如下因素:
1. 一对多级联查询(这个简单啦,不就是select命令吗)
2. 级联更新(如果使用自增长的ID就可不考虑)
3. 级联删除(先进行级联查询,再逐个删除)
4. 级联置空(根据需求情况而定)
5. 其他复杂的定制操作(如连表操作等)