2010-11-01 52 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