Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql |关系数据库与非关系数据库的性能对比_Mysql_Sql_Database - Fatal编程技术网

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数据库和大量数据要处理,那么最好在所有表上使用关系?不,我认为在这些情况下您需要的是索引。索引它们的方式由您决定(在表上创建外键或手动添加索引)。