【问题标题】:SQL: insert as 1 query with all fields, or multiple queries?SQL:作为 1 个查询插入所有字段,还是多个查询?
【发布时间】:2009-11-25 14:57:38
【问题描述】:

所以我有一个关于 PHP 页面在表中插入新行的最佳实践的问题。有一些必填字段(也称为 NOT NULL)和一些可选字段(可以为 NULL)。是用一个查询插入所有内容更好,还是只做必填字段,获取插入的 ID 并用一个或多个其他查询更新其他字段?

如果我使用where <primary key> = "x" 进行多次更新,性能是否会受到很大影响?还是最好进行多次更新,这样如果其中一个可选更新不起作用,其余的就可以了?

【问题讨论】:

    标签: php sql mysql insert


    【解决方案1】:

    一般来说,您应该对所有值执行一次 INSERT。这在数据库处理方面会更便宜,但同样重要(或更重要的是)它将使您的应用程序代码更简单。

    我不确定您为什么会想到替代方案,但这让我认为您认为某些辅助列值将被拒绝可能是某些应用程序特定的原因。如果是这样,请告诉使用更多关于您的具体情况。

    【讨论】:

    • 如果您的“setter”中有业务逻辑,那么您可能更愿意创建一条记录,将其作为业务对象检索,然后更新值,以避免重复代码。
    【解决方案2】:

    我会使用一个查询有两个原因:

    1. 每次调用数据库都会增加应用程序的开销。如果您只进行一次更新就可以逃脱惩罚。
    2. 如果您使用单独的调用,则可能有人试图在更新之间查看数据并看到“不完整”的数据。

    【讨论】:

      【解决方案3】:

      对于单行,您确实应该执行单个 INSERT。如果担心列值无效,则应更加重视应用层,以在进行 INSERT 之前验证代码(数据类型、数据长度等)。

      通过这种方式,您将拥有更完整的代码,同时对应用程序服务器、数据库服务器和网络的影响也会小得多。

      【讨论】:

        猜你喜欢
        • 2014-07-18
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 2011-09-12
        • 1970-01-01
        • 2011-12-26
        相关资源
        最近更新 更多