我一直在想在PHP中創建一個論壇,所以我做了一些研究,看看人們在數據庫中創建的表的標準是什麼。在我查閱的大多數網站上,他們總是選擇一個表格用於線索,另一個用於線索上的帖子。PHP論壇數據庫優化
擁有一個線程表似乎對我來說是完全理性的,但是在一個表中保留所有線程上的所有帖子似乎有點太多了。爲每個線程創建一個表來保存該線程的帖子,而不是在一個表中粘貼幾十萬個帖子會更好嗎?
我一直在想在PHP中創建一個論壇,所以我做了一些研究,看看人們在數據庫中創建的表的標準是什麼。在我查閱的大多數網站上,他們總是選擇一個表格用於線索,另一個用於線索上的帖子。PHP論壇數據庫優化
擁有一個線程表似乎對我來說是完全理性的,但是在一個表中保留所有線程上的所有帖子似乎有點太多了。爲每個線程創建一個表來保存該線程的帖子,而不是在一個表中粘貼幾十萬個帖子會更好嗎?
這些表應表示數據庫中數據的結構。如果你有2個對象,在這個例子中是你的線程和你的帖子,你應該把它們放在2個表格中。
相信我,如果你按照自己的想法去做,這將是一場噩夢,試圖找出適合每個帖子展示的表格。 SQL看起來像什麼?類似於
SELECT *
FROM PostTable17256
並且您將不得不在每個請求上動態構造此查詢。
但是,通過使用1個表,您可以簡單地獲取一個ThreadID並將其作爲變量傳遞給您的查詢。
SELECT *
FROM Posts
WHERE ThreadID = $ThreadID
關係數據庫被設計爲具有容納大量行的表。順便說一句,你可能會對DBA認爲是「很多」感到驚訝。在大多數地方,具有1,000,000行的表被認爲是小到中。
不準不準。數據庫愛巨大的桌子。將帖子拆分爲多個表格會導致許多令人頭痛的問題。
將帖子存儲在一張表中是最佳解決方案。
MySQL可以很容易地在表中容納數百萬行。
創建多個表格可能會導致很少的問題。 例如,您將無法使用來自不同線程的帖子的JOIN。
您沒有指定要使用哪個數據庫,但其中大多數可以輕鬆處理具有數百萬行的表。有機會,你不會有這麼多帖子,所以你會沒事的。爲每個線程創建一個表並不是要走的路。 – NullUserException 2012-04-05 14:25:53
謝謝。我並不是真的在做論壇,這只是一個假設性的問題。 – Zizo47 2012-04-05 20:51:06