【问题标题】:Using Multiple Database query compared to single Database query in MySQL与 MySQL 中的单数据库查询相比,使用多数据库查询
【发布时间】:2014-12-06 06:36:45
【问题描述】:

我可能是一个琐碎的问题,但我敢问,请帮我回答这个问题。

我一直在开发一个 PHP Mysql 应用程序。之前,我曾经使用以下原则:

  1. 通过 Javascript 验证 HTML 表单
  2. 通过检查每个输入在 PHP 中进行错误验证
  3. 如果成功,通过单个 MySQL 查询更新数据库

现在,我正在遵循以下另一种方法:

  1. 无 Javascript 验证,但在需要输入的表单中使用 required 属性
  2. 在 PHP 中对每个输入元素进行错误验证并同时更新数据库

因此,在我使用的第二种方法中,我为每个行更新进行多个 MySQL 查询(大约 30 个查询)。

我知道,它可能不会带来最佳性能,但是,

  1. 它已将代码行数减少了至少 3 倍(如果不是更多)。
  2. 开发、调试和协作更容易
  3. 开发时间要少得多(根据我自己的估计,减少了 5 倍)

我希望您对第二种方法的想法,我目前在我的应用程序中使用。

【问题讨论】:

  • 如果你正在更新一个表,我个人认为你必须做的查询越少越好,但那是因为我是一个懒惰的人,这反映在我的编码中,因为我不想必须做不止一次或两次的事情。我可能完全错了,除了学习和发展之外,我从来没有参加过任何认证或走得太远。为什么不尝试混合方法 - 使用 require,但仍构建 1 个查询?

标签: javascript php mysql database performance


【解决方案1】:

我认为这里的混淆是为了 2 分,

  1. 代码开发工作和可读性
  2. 性能

通常,代码开发和可读性优先于性能。这种方法通常适用于小规模应用程序。因为小型应用程序不会面临严重的性能问题。

但是当应用程序的大小增加时,1 个查询与 30 个查询将显示出差异。想象一下,如果有 100-1000 个用户使用您的应用程序,并且使用第一种方法,您将触发 100-1000 个查询,但使用第二种方法,您将在 DB 上触发 3000-30000 个查询。

这会减慢您的整个应用程序。作为没有。的查询与,

  1. 连接池限制
  2. 数据库锁定时间(1 个查询将锁定行小时间 x,但 30 个查询将锁定行 30x 时间)

在最坏的情况下,如果您的应用程序有其他表单、模块也从数据库读取,那么这些查询将遭受锁定问题。

要获得更高的性能和可扩展性,请少用。如果更新查询的编码开销很小,则应该首选这些查询。其他 jquery 模块可用于验证,这也将减少编码工作。

【讨论】:

    【解决方案2】:

    我想你几乎回答了你自己的问题,你基本上是在说,我正处于一个十字路口,我可以选择执行 30 个查询的脚本,或者多做一点工作,它可能是 1 个查询。

    我认为这是不行的。使用发送的值构建查询语句效率更高。这也是一种最佳实践,因为大多数情况下,您无法预测应用程序将如何增长。

    我也喜欢 html 验证,尽管浏览器仍然以不同的方式处理它。由于我的大多数项目都涉及使用 jQuery,我倾向于使用 jquery.validate 插件,它只需要几行额外的代码就可以获得一个即时响应的表单,这对于用户交互非常有用。当然,服务器端验证应该始终到位。

    【讨论】:

      猜你喜欢
      • 2016-09-21
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      相关资源
      最近更新 更多