花费时间优化sql查询VS从数据库推送不必要的数据

马修斯·科雷亚(Matheus Correia)

我的数据库中有一个很大的表,并且我想要一个函数,例如执行UPDATE查询。

在以前的项目中,我曾经做过的工作是传递所有列的所有值,然后将它们插入查询字符串中,例如以下示例:

function updateUser($id, $name, $username){

    $query =  "UPDATE user SET name = '{$name}', username = '{$username}' WHERE id = '{$id}' ";

    return mysqli_query($this->conn, $query);

} 

意思是说,每一列都被更改了,即使那些没有更改的列也是如此。

但是,这一次是一个大表,我不想牺牲应用程序的速度。

我想做的是进行一些比较,从而优化查询,然后将其发送到数据库。

停留在之前的UPDATE查询示例中,这是我要执行的操作:

function updateUser($old_user, $new_user, $user_id){

    $changed = false;

    $oldFirstName = $old_user->getFirstName();
    $newFirstName = $new_user->getFirstName();
    if($oldFirstName == $newFirstName){
        $firstNameQuery = "";
    }else{
        $firstNameQuery = " first_name = '".mysqli_escape_string($this->conn, $newFirstName)."',";
        $changed = true;
    }

    $oldLastName = $old_user->getLastName();
    $newLastName = $new_user->getLastName();
    if($oldLastName == $newLastName){
        $lastNameQuery = "";
    }else{
        $lastNameQuery = " last_name = '".mysqli_escape_string($this->conn, $newLastName)."',";
        $changed = true;
    }

    $oldEmail = $old_user->getEmail();
    $newEmail = $new_user->getEmail();
    if($oldEmail == $newEmail){
        $emailQuery = "";
    }else{
        $emailQuery = " email = '".mysqli_escape_string($this->conn, $newEmail)."',";
        $changed = true;
    }

    if($changed){
        $query = "UPDATE user SET {$firstNameQuery}{$lastNameQuery}{$emailQuery} WHERE user_id = {$user_id}";
        return mysqli_query($this->conn, $query);
    }else{
        return 0;
    }
}

正如您所看到的,随着表的增长,此功能变得越来越大,并且具有更多的比较和归因。

我的问题是:我是否节省了很多时间来执行此操作,或者它不是whoth吗?

戈登·利诺夫(Gordon Linoff)

你可能会使得代码更少效率。更新的大部分时间都在记录事务并物理存储每个记录的数据页。因为一条记录的所有列(通常)都存储在单个页面上,所以更新一列或多列无关紧要。

另一方面,应用程序中的其他比较也需要时间。

当然,与任何与性能相关的问题一样,您可以测试不同的方案。通过这种逻辑来减少更新中的列数,我不会期望性能有任何显着的提高,除非它完全消除了更新某些行的需要。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Redux花费时间在秒表上并将其放入数据库中

来自分类Dev

无法花费时间和数据作为输入并写入使用Hasura GraphQL实现的数据库

来自分类Dev

SQL Not IN查询花费时间与类似的表

来自分类Dev

带有AWS Elastic Beanstalk的Flask SQLAlchemy数据库-浪费时间吗?

来自分类Dev

不必要的数据库事务导致缓慢?

来自分类Dev

SQL Server查询优化器执行不必要的联接

来自分类Dev

从网页上抓取数据需要花费时间才能加载时出现问题

来自分类Dev

实体框架,代码优先:避免不必要的连接到Azure主数据库

来自分类Dev

如何避免在Codeigniter中过多和不必要的数据库连接

来自分类Dev

阻止Rails url_helper从数据库请求很多不必要的对象

来自分类Dev

优化数据库查询

来自分类Dev

MySQL查询执行一个大型表需要花费时间?

来自分类Dev

PFUser查询花费时间从Parse中提取用户

来自分类Dev

PFUser查询花费时间从Parse中提取用户

来自分类Dev

MySQL查询执行一个大型表需要花费时间?

来自分类Dev

Mongo 优化:查询性能 vs 数据库结构

来自分类Dev

优化大型数据库的MS SQL选择查询

来自分类Dev

花费时间在垃圾收集器上

来自分类Dev

花费时间在TeamCity中进行特定的构建步骤

来自分类Dev

产生掩护所花费时间的意义

来自分类Dev

在两个输入之间花费时间c ++

来自分类Dev

使用CPU是否需要花费时间?

来自分类Dev

产生掩护所花费时间的意义

来自分类Dev

在onmouseover上花费时间显示图像

来自分类常见问题

实体框架优先:通过更新数据库进行迁移失败,强制进行不必要的(?)add-migration

来自分类Dev

实体框架优先:通过更新数据库迁移失败,强制进行不必要的(?)add-migration

来自分类Dev

如何设置相关实体的count属性,而不必执行额外的查询或包含不必要的数据

来自分类Dev

数据库查询优化mySQL

来自分类Dev

大型数据库的查询优化

Related 相关文章

  1. 1

    使用Redux花费时间在秒表上并将其放入数据库中

  2. 2

    无法花费时间和数据作为输入并写入使用Hasura GraphQL实现的数据库

  3. 3

    SQL Not IN查询花费时间与类似的表

  4. 4

    带有AWS Elastic Beanstalk的Flask SQLAlchemy数据库-浪费时间吗?

  5. 5

    不必要的数据库事务导致缓慢?

  6. 6

    SQL Server查询优化器执行不必要的联接

  7. 7

    从网页上抓取数据需要花费时间才能加载时出现问题

  8. 8

    实体框架,代码优先:避免不必要的连接到Azure主数据库

  9. 9

    如何避免在Codeigniter中过多和不必要的数据库连接

  10. 10

    阻止Rails url_helper从数据库请求很多不必要的对象

  11. 11

    优化数据库查询

  12. 12

    MySQL查询执行一个大型表需要花费时间?

  13. 13

    PFUser查询花费时间从Parse中提取用户

  14. 14

    PFUser查询花费时间从Parse中提取用户

  15. 15

    MySQL查询执行一个大型表需要花费时间?

  16. 16

    Mongo 优化:查询性能 vs 数据库结构

  17. 17

    优化大型数据库的MS SQL选择查询

  18. 18

    花费时间在垃圾收集器上

  19. 19

    花费时间在TeamCity中进行特定的构建步骤

  20. 20

    产生掩护所花费时间的意义

  21. 21

    在两个输入之间花费时间c ++

  22. 22

    使用CPU是否需要花费时间?

  23. 23

    产生掩护所花费时间的意义

  24. 24

    在onmouseover上花费时间显示图像

  25. 25

    实体框架优先:通过更新数据库进行迁移失败,强制进行不必要的(?)add-migration

  26. 26

    实体框架优先:通过更新数据库迁移失败,强制进行不必要的(?)add-migration

  27. 27

    如何设置相关实体的count属性,而不必执行额外的查询或包含不必要的数据

  28. 28

    数据库查询优化mySQL

  29. 29

    大型数据库的查询优化

热门标签

归档