2009-11-25 61 views
0

所以我有一個關於PHP頁面插入一個新行到表中的最佳做法的問題。有一些必填字段(又名NOT NULL)和一些可選字段(可以是NULL)。用一個查詢插入所有內容,還是隻做所需的字段,獲取插入的ID並使用一個或多個其他查詢更新其他字段更好?SQL:將所有字段或多個查詢插入爲1查詢?

如果我使用where <primary key> = "x"進行多個更新,是否會有很大的性能下降?或者更好地做多個更新,以便如果其中一個可選更新不起作用,其餘的呢?

回答

6

一般而言,您應該使用所有值執行一次INSERT。這在數據庫處理方面會更便宜,但同樣重要的是(或者更重要)它會使您的應用程序代碼更加簡單。

我不確定爲什麼這個選擇偶然會出現在你身上,但是這讓我覺得可能有一些應用程序特定的原因讓你覺得某些子列值會被拒絕。如果是這樣,請告訴用戶更多關於您的具體情況。

+0

如果您的「設置者」中有商業邏輯,那麼您可能更願意創建一條記錄,將其作爲業務對象進行檢索,然後更新這些值以避免重複代碼。 – 2009-11-25 15:04:08

1

我會用一個查詢,原因有二:

  1. 數據庫的每個調用將開銷添加到您的應用程序。如果你只能做一次更新,就可以這樣做。
  2. 如果您使用不同的呼叫,則可能有人試圖在更新之間查看數據並看到「不完整」數據。
0

對於單排,你應該真的做一個單一的插入。如果擔心列值無效,則在進行INSERT之前,應該在應用程序層中更多地強調驗證代碼(數據類型,數據長度等)。

您將通過這種方式獲得更全面的代碼,並且會同時減少對應用程序服務器,數據庫服務器和網絡的影響。