應用程序動態創建數據庫表作爲分區的手段是否合理?動態創建表作爲分區的一種方式:好還是壞做法?
例如,假設我有一個大表「widgets」,其中有一個標識每行所有者的「userID」列。如果這個表格變得非常大,那麼讓應用程序爲每個新用戶創建一個名爲「widgets_ {username}」的新表格會有意義嗎?假設應用程序一次只需查詢屬於單個用戶的小部件(即不需要嘗試將這些用戶小部件表中的任何一個連接在一起)。
這樣做會將一張大桌子拆分爲更容易管理的塊,但這看起來不是一個優雅的解決方案。在我看來,應該在應用程序寫入時定義數據庫模式,並且任何運行時數據都以行的形式存儲,而不是作爲附加的表存儲。
作爲一個更普遍的問題,在運行時修改數據庫模式可以嗎?
編輯:這個問題大多是假設的;我有一個非常好的感覺,即在運行時創建表沒有任何意義。這就是說,我們的應用程序中有一個包含數百萬行的表格。 SELECTs表現良好,但刪除特定用戶擁有的所有行可能需要一段時間。基本上我正在尋找一些可靠的推理,爲什麼只是爲每個用戶動態創建一個表格對於我什麼時候被問到什麼都沒有意義。
爲什麼你認爲一個擁有大量小部件 - 用戶名錶的數據庫比一個帶有額外列「用戶名」的表更好?使用後者,並使用正確的索引。 – Konerak
爲什麼還要打擾?是SELECT * FROM部件WHERE userID ='Fulano'需要很長時間才能運行? –
「輕鬆管理」是什麼意思?你在談論查詢表格還是存檔等任務? –