2012-12-10 54 views
1

我必須爲數據庫中的幾乎每個表存儲2個日期,例如tbl_clients tbl_users tbl_employers tbl_position tbl_payments tbl_quiz tbl_email_reminder如何組織MySQL日曆日期的存儲性能

大多數時候,我店 「DATE_CREATED」 和 「DATE_MODIFIED」 有時一些額外的日期。

請告訴我。將存儲日期在MySQL數據庫性能明智的(網站,可能有很多的客戶以後也許500,000)的最好方法

選項1:添加2列日期每個表。

選項2:創建專用於日期的表「tbl_dates」。

我在想,選項2將工作得更快,因爲我只需要顯示在一個特定頁面上的日期,例如「report.php」我是對嗎?

還有多少列我應該把最大的「tbl_dates」沒有駕駛它太慢。

+1

將它們存儲在表級別。只要確保你使用的是本地日期類型。通過嘗試在外部表格上記錄日期,你將爲自己創造更多的工作。 – Kermit

回答

0

對於一般情況(行創建和行修改時間戳),我會將它們放在與它們相關的同一個表中。否則,你會發現你所需要的後續連接會比簡單的方法更慢地減慢你的查詢速度。

在任何情況下,您都不想養成許多表可以使用的「常規表」的習慣 - 這是因爲理想情況下,您會爲每個關係創建外鍵,但這不起作用如果某些行屬於tbl_clients,則一些行到tbl_users ...(等)。

無可否認,您的MySQL引擎可能會阻止您使用外鍵 - 取決於您使用的是哪一個 - 但是(至少對我而言)這個觀點是站得住腳的。

+0

爲什麼不在表'tbl_users'中創建字段'user_id'主鍵,然後將其值添加到每個其他相關表的'user_id'列中。
或者有第三個表連接'tbl_users'主要ID與'tbl_clients'主要ID

我總是寧願存儲許多表與一個,並與'LEFT JOIN'去'我從來沒有問題,它實際上更清楚地把數據不同的表格,並加入我們使用50列相同的表格。除了連接速度與其他任何方法相同之外,您只需將索引添加到數據庫中用於加入的某些字段即可。 –

+0

如果(a)只有'tbl_users'行的一小部分具有創建/修改時間戳,或者(b)單行有可能具有多個創建/修改時間戳,那麼在創建單獨的表時唯一有價值。據我所知,這些可能性都不是真的,所以你會因爲沒有理由而增加複雜性。 – halfer