连接三个表时的多个键/索引/约束

时间:2010-06-07 14:12:50

标签: primary-key constraints query-optimization unique-key

当我试图区分这些术语的含糊之处时,我变得越来越困惑。我的查询花费的时间超过了必要的时间,因为我无法在桌面上获取密钥以用于其他连接。

我在t1中只有一列是“Unique”,还有一些是73.8%的唯一列,我无法弄清楚如何将它们合并为键,约束,索引或者我正在寻找的任何东西。< / p>

SELECT t1.*, 
    (SELECT
         t3.comments
     FROM dashboard_data.unit_comments As t3
     WHERE t1.sr=t3.sr) comments,
    (SELECT
         t4.priority
     FROM dashboard_data.units_to_ship As t4
     Where t1.rma=t4.rma) priority
FROM report_tables.idle_report As t1

所以,基本上,我想让SR和RMA成为他们自己的密钥,这样我就可以利用这个查询中所有表的密钥,但是在花了一天时间搜索网页并阅读不同来源对这些术语的解释后,我仍然可以弄清楚我需要做什么来优化这个查询。

我很抱歉,因为我知道这被问了很多,但即使在阅读了其他一些问题和答案之后,我似乎无法将它们应用到我的具体案例中。我甚至可以使用钥匙吗?如果您需要更多信息,请告诉我。另外,我打算在EXPLAIN SELECT中粘贴,但我无法弄清楚如何轻松格式化制表符分隔(excel)副本。我没有在格式化的完整参考中看到它。

1 个答案:

答案 0 :(得分:0)

好的,所以我想我终于找到了答案。主键是唯一的,只有唯一的,我可以有一个主键,但仍然有单独的indeces。所以我将尝试使用ALTER TABLE为RMA和SR创建索引。

仍然不确定有什么约束,从我收集的内容来看,我猜它只是密钥或索引的同义词。

这些是我的发现:

  • Indeces OR PK可以是单列或多列
  • Indeces OR PKs可以是前缀
  • 只能有一个PK
  • 可以有很多个人
  • PK必须是唯一的
  • Indeces可以是唯一的或非唯一的

我在上述陈述中是否正确,我是否错过了(至少对于基本信息)?