MySql |关系数据库与非关系数据库的性能对比
我想问的是,如果我们定义关系,一对一,一对多等,与我们不创建关系,而是像这样加入表相比,会提高性能吗MySql |关系数据库与非关系数据库的性能对比,mysql,sql,database,Mysql,Sql,Database,我想问的是,如果我们定义关系,一对一,一对多等,与我们不创建关系,而是像这样加入表相比,会提高性能吗 select * from employee inner join user on user.user_id = employee.user_id 我知道以前有人问过这个问题,我得到的大多数答案都是,不使用关系不会影响绩效 但我也听说创建索引可以加快查询速度,因此可以在表上为外键创建索引而不创建关系。我对索引有点困惑 如果我们有100多个表加上大量记录这样的大型数据库,关系在数据库查询性能方面
select * from employee inner join user on user.user_id = employee.user_id
我知道以前有人问过这个问题,我得到的大多数答案都是,不使用关系不会影响绩效
但我也听说创建索引可以加快查询速度,因此可以在表上为外键创建索引而不创建关系。我对索引有点困惑
如果我们有100多个表加上大量记录这样的大型数据库,关系在数据库查询性能方面会起作用吗
im使用mysql和php..外键基本上用于数据完整性 当然,索引可以提高性能
关于使用或不使用外键时的性能,如果说外键可以提高性能,那是因为定义外键时隐含地定义了索引。如果引用表不存在,则会自动在引用表上创建这样的索引 关系用于维护数据库的引用完整性。它们根本不会影响“select”查询的性能。它们确实会降低“插入”、“更新”和“删除”查询的性能,但您很少需要没有引用完整性的关系数据库 索引使“选择”查询运行得更快。它们还使插入和更新查询的速度大大降低。要了解有关索引如何工作的更多信息,请访问。这是迄今为止我找到的关于这个话题的最好的网站
也就是说,当您声明主键时,数据库通常会自动生成索引,其中一些数据库(特别是MySql)甚至在您定义外键时也会自动生成索引。你可以在上面的网站上阅读他们为什么这样做。简而言之:对相互关联的数据使用RDBMS。因此,简而言之,你的意思是在表上创建索引,我必须创建关系,然后这意味着关系提高了性能??不完全是,我的意思是创建索引提高了选择查询的性能。就是这样,当您提高性能时,添加外键就是因为这个原因。那么这是否意味着,如果我们有一个hudge数据库和大量数据要处理,那么最好在所有表上使用关系?不,我认为在这些情况下您需要的是索引。索引它们的方式由您决定(在表上创建外键或手动添加索引)。