MySQL效率问题

时间:2010-11-01 08:51:55

标签: sql mysql

我有下表

活动:

EVENT_ID EVENT_OWNER_ID EVENT_NAME EVENT_DATE EVENT_PRIVATE EVENT_ACTIVE

除EVENT_NAME之外的所有字段都是日期,整数或位。

在EVENT_ID和EVENT_NAME之间使用另一个表来匹配是否更有效?当我需要时,我会使用JOIN来查看事件名称?或者JOIN效率低于我现在拥有EVENT_NAME的一张桌子吗?

4 个答案:

答案 0 :(得分:1)

除非您跟踪使用相同名称的重复事件(规范化示例),否则两个表在所有方面的效率都会降低。该技术可以节省的唯一资源是非常少量的磁盘空间。就查询效率而言,一个表总是更有效率。

基本上,如果两个数据之间存在一对一的关系(在此示例中,它将是Event_Name和事件数据的其余部分),您将需要在同一个表中的数据。

如果您想了解更多信息,请参阅Google规范化与非规范化。

答案 1 :(得分:0)

将事件固定信息存储在事件列表中是不正确的。 如果你决定改变事件名称 - 你将不得不改变很多行,而不是1行。

你的数据库应该正常化。 在事件列表中 - 仅ides和事件特定数据(日期,时间,生成器) 在event_id列表中 - 事件的固定数据(名称,严重性,类似于文档等...)

答案 2 :(得分:0)

如果某个活动只能拥有一个所有者,一个名字和一个日期......那么您可以将其保存在一个表格中。

答案 3 :(得分:0)

我认为两个表的效率可能较低,但答案可能取决于您运行的硬件和表的总大小。如果表的总大小是100Mb,那么你可能会把整个事情记在内存中。

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