【问题标题】:Should I use join for simple relationships in MySQL我应该在 MySQL 中使用 join 来处理简单的关系吗
【发布时间】:2019-03-26 22:01:04
【问题描述】:

JOIN 是从其他表中添加信息的正确方式(唯一方式吗?)?

例如 如果我有这些表:

员工

name | pay_table
--------------------
John | 1
Lisa | 2

支付

Id  | Pay
---------------------
1   | 30000
2   | 50000

而且我需要一张表中的姓名和工资,最好的方法是这样写:

SELECT * FROM Employees
LEFT JOIN Pay
ON Pay.id = Employees.pay_table

?还是有更好的办法?

我之所以问是因为这通常看起来很慢,即使我在大表中只有一些此类关系。

【问题讨论】:

  • 这是一个非常好的解决方案
  • 但它是最好/最快的吗?
  • 显示你的慢查询。 dba.stackexchange.com 是纯数据库问题的好站点。 Query OptimizationHow MySQL uses indexes 是很好的起点。
  • 在这种情况下这是一个奇怪的映射,因为它总是 1-1。一个正确索引的表,即CREATE INDEX pay_table ON Employees (pay_table),并假设支付上的 Id 是主键(或至少是某种形式的索引)将很快得到结果。
  • @Strawberry 这是一个简化的表格。但是可能有 50 个人的薪水相同。有一张单独的桌子可以让我一次更改他们所有的工资。这是一个简单的用例。可能还存在更复杂的问题,例如每个 pay_table 是否有关于上次更改时间、谁、合同信息链接等的信息。

标签: mysql join relationship


【解决方案1】:

是的,这是正确的方法。

正确的索引将解决连接的大多数性能问题。

SHOW CREATE TABLE {table name}EXPLAIN {query} 是帮助解决 MySQL 性能问题所需的主要信息。

【讨论】:

    猜你喜欢
    • 2018-06-12
    • 2010-09-30
    • 2021-05-26
    • 2023-02-24
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多