Mysql

大表好還是多表好(MySQL)

  • February 19, 2019

在性能方面,最好是只有幾張多行的表還是多張只有幾行的表?在我的例子中,我有一些組要單獨保存數據。是為每個組創建一個新表,還是將組的所有資訊保存在一個表中(這將變得非常非常大)並有一列標識它屬於哪個組?哪個版本在可擴展性方面會更好?我正在使用 PHP 來訪問數據,每次頁面載入我只需要獲取一兩個組的數據。當儲存大量數據時,我主要關心系統的速度。謝謝。

您應該問自己這些單獨的組是否需要相同的表結構。在關係數據庫中,單獨的表應該代表單獨的實體。以這種方式建構數據庫可以使具有相似欄位的實體保持在一起,並在數據庫中創建邏輯流。

盡可能地嘗試建構您的數據庫,以便單獨的實體擁有自己的表。即使這會以某種方式花費一些可忽略不計的額外性能,它也會在編寫查詢或嘗試擴展數據庫時為您節省數小時的時間。

相信我,作為一個使用過數據庫的人,其中表包含的資訊在邏輯上應該以五六個表的形式存在,您將為自己省去很多麻煩。

在我的例子中,我有一些組要單獨保存數據。是為每個組創建一個新表,還是將組的所有資訊保存在一個表中(這將變得非常非常大)並有一列標識它屬於哪個組?

定義“非常非常大”。

數百萬行?那是大

$$ -ish $$. 任何低於這個值的東西都不是。 如果您使用多個表,您將如何辨識它們?

您不想將組名用作表名,因為有人會創建一個包含不能這樣使用的字元的組並破壞所有內容。因此,您最終會得到另一個表,該表使用其他任意標識符將每個表名連結到其組名。

假設你這樣做了;然後,您將如何編寫遍歷所有這些表的任何類型的查詢,出於管理目的,您可能需要這樣做。讓我們假設數據庫足夠強大,可以在一個查詢中連接或合併那麼多表?(例如,MySQL 曾經被限制為 61 個這樣的表)。

基本上,table-per- thing模型通常是一個壞主意,應該避免。

創建一個單獨的 Groups 表,每個 Group 都有一個唯一標識符,並為您打算針對它執行的查詢合理地索引它。

引用自:https://dba.stackexchange.com/questions/147147