【问题标题】:Is MySQL JOIN heavy operation?MySQL JOIN 是重操作吗?
【发布时间】:2019-02-17 06:30:44
【问题描述】:

我有一个小问题。 MySQL JOIN 是重操作吗?例如,在我的一个项目中,我在一个查询中有大约 10 个联接。这很糟糕吗?

这是一个大项目,我有很多表,因为我经常听到将整个数据库分成小部分是个好主意。这正是我所做的,结果是 10 个连接。那有什么办法呢?

【问题讨论】:

  • 基准测试。这是唯一知道的方法。联接并不总是相同的。这取决于表的大小、它们的连接方式、收集的统计信息等。
  • 这取决于连接、数据、索引等。100 个连接可能没问题,或者 2 个连接可能太多,具体取决于环境。

标签: mysql sql database join database-design


【解决方案1】:

当你需要加入时你加入,所以这是否是一个繁重的操作的问题并不重要。

在一个好的数据库中,每个实体都有一个表,例如产品、客户、订单。如果您仔细观察,您会发现订单由一个标题和多个位置组成,每个位置都指向一个产品。所以这必须是两个订单表:order_header 和 order_detail。以四个表为例。你不会再把这个分开,像法国客户和美国客户,或者便宜的产品和昂贵的产品,因为客户的国家只是一个属性,一个产品是否便宜取决于它的价格,价格也是一个属性;实体仍然是客户和产品。

话虽如此,“最好将整个数据库分成小部分” 是一个奇怪的建议。每个实体有一个表,对于某些地址数据库可能只有两个表,或者对于大公司的产品数据库可能只有一千个表。

回答这个问题:不,一个查询中有十个联接也不错。但是,如果您盲目地按照建议创建许多表,您可能希望有人查看您的数据库设计。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-26
    • 2011-12-04
    • 1970-01-01
    • 2013-11-05
    • 2018-12-06
    • 1970-01-01
    • 2018-09-19
    • 2012-04-26
    相关资源
    最近更新 更多