2010-11-01 62 views
2

我有以下表MySQL的效率問題

活動:

EVENT_ID EVENT_OWNER_ID EVENT_NAME EVENT_DATE EVENT_PRIVATE EVENT_ACTIVE 

除了EVENT_NAME所有字段或者是日期,int或位。

EVENT_ID和EVENT_NAME之間是否有另一張表格匹配效率更高,當我需要時我只會使用JOIN查看事件名稱?或者JOIN效率低於僅有一個EVENT_NAME表與我現在有效?

+2

您的效率標準是什麼? – Georgi 2010-11-01 08:53:09

+0

當我說效率時,我基本上要求比較兩個選項之間的速度,當我在此表中有數百萬行時。 – Jim 2010-11-01 08:56:06

回答

0

將事件固定信息存儲在事件列表中是不正確的。 如果您決定更改事件名稱 - 您將不得不更改很多行,而不是1行。

你的db應該被標準化。 在事件列表 - 只有IDE和事件的具體數據(日期,時間,發電機)在EVENT_ID名單 - 對事件的固定數據(名稱,嚴重程度,就像給文件等...)

0

如果一個事件只能有一個所有者,一個名字和一個日期......那麼你可以把它放在一張桌子上。

0

我認爲兩個表可能效率較低,但答案可能取決於您正在運行的硬件和表的總大小。如果表的總大小是100Mb,那麼你可能會在內存中獲得整個事物。

效率更重要的是索引和其他優化。

1

除非您正在跟蹤使用相同名稱的重現事件(標準化示例),否則兩個表在各方面效率都較低。該技術可以節省的唯一資源是非常少量的磁盤空間。就查詢效率而言,一張表總是更有效率。

基本上,如果兩條數據之間存在一對一的關係(在本例中爲Event_Name和事件數據的其餘部分),您將需要該數據在同一個表中。

如果您想了解更多信息,請參閱Google規範化與非規範化。

+0

@JN - 1up在你的答案純粹簡單。 – 2010-11-06 02:53:59