你如何保持JOIN表的表现?

时间:2010-11-16 02:33:54

标签: sql linq

我正在为我的网站上的一些新功能制定计划,并且可以使用连接表“解决”一个。

示例模式:

人员表

  • PK PersonId
  • 名称
  • 年龄......

PersonCheckin表

  • PK FK PersonId
  • PK FK CheckinId
  • 日期......

签入表

  • PK CheckinId
  • CheckedInto ...

将运行联接以获取某人的签入数据(通过PersonCheckin表连接)。由于每个人都可以无限次地检查,因此PersonCheckin表可能变得非常大。

我认为这会导致一些性能问题。处理这些以保持高性能的典型方法是什么?

2 个答案:

答案 0 :(得分:2)

联接正在考虑连接相关表格的最佳表现方式 但它实际上取决于查询,因为它可能不需要是JOIN - 如果有多个子记录相关,JOIN可以扩充父表侧的记录集,这意味着可能需要任何一个GROUP BY或DISTINCT。在这种情况下,EXISTS或IN是更好的选择...

索引可以帮助关系两侧的JOIN条件中使用的列。在此示例中,双方都是主键,通常在定义主键时自动创建最佳索引...

答案 1 :(得分:-1)

如果您要经常执行此查询并希望获得更好的性能,只需在编写连接查询的数据库上创建一个视图