首页 > 编程知识 正文

mysql的优点和缺点,为什么不建议使用外键

时间:2023-05-04 02:08:54 阅读:133697 作者:3875

来自3:http://www.cn blogs.com/ful and/p/4280434.html

主键和索引是必不可少的,除了优化数据搜索速度外,开发人员还可以省去其他任务

冲突:数据库设计是否需要外键。 这里有两个问题。 一种是保证数据库数据完整性和一致性的方法;二是对第一种性能的影响。

正面看法:

1 )数据库自身保证数据的完整性、完整性、更可靠。 因为程序很难100%保证数据的完整性,但使用外键可以在数据库服务器崩溃或出现其他问题时最大限度地保证数据的完整性和完整性。

()数据库和APP应用程序是一对多的关系,a APP应用程序维护他的数据完整性。 当系统变大时,会添加b APP应用程序,a和b这两个APP应用程序可能是由不同的开发团队创建的。 他们如何协调以保证数据的完整性,并在一年后添加c APP应用程序?

2 )具有主外键的数据库设计可以提高ER图的可读性,这在数据库设计时非常重要。

3 )外键在一定程度上说明的商业逻辑,使设计周全具体全面。

相反的观点:

1 )可以通过触发器或APP应用程序保证数据的完整性

2 )过度强调或使用主键/外键会导致开发困难、表格过多等问题

3 )不使用外键时,数据管理简单、操作简单、性能高)导入导出等操作,insert、update、delete数据时更快) ) )。

eg:不要在庞大的数据库中考虑外键。 想想一个每天插入数百万条记录的程序。 如果有外键约束,则每次扫描该记录是否通过时,通常情况并非如此

由于一个字段包含外键,因此扫描数将呈级数增长。 我的程序入住三个小时就结束了。 加上外键,需要28小时!

结论:

1 )在大型系统中)使用外键(性能要求不高,安全要求高); 在大型系统中(性能要求高,可以安全地自行控制),不使用外键; 小系统是自由的,最好使用外键。

2 )使用外键合适,不要过度追求

3 )如果要在不使用外键的情况下以编程方式控制数据的完整性和完整性,则必须编写并保证层,并且每个APP应用程序都必须通过该层访问数据库。

虽然MySQL可以使用外键,但为了检查一致性,除InnoDB表类型外的所有表类型都将忽略此功能。 这可能很奇怪,但实际上非常正常。 每次插入、更新和删除数据库的所有外键时检查完整性是一个消耗时间和资源的过程,这可能会影响性能,特别是在处理复杂的连接树和复杂的连接树时。 因此,用户可以根据表选择适合特定需要的最佳组合。 因此,如果需要更好的性能而不需要完整性检查,则可以选择使用MyISAM表类型。 如果希望MySQL基于参照完整性创建表,并据此保持良好的性能,建议将表结构设置为innoDB类型

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。