1

我想知道映射表的用途是什么,以及它如何加速 MySQL 查询。我正在努力加快一个缓慢的 MySQL 查询,我遇到了这个stackoverflow 问题。评论表明,映射表不仅可以加快连接两个表的查询,而且它们是构建数据库的正确方法。

我有一个非常相似的表结构,具有一对多的关系。随着表的增长,查询执行时间继续攀升到不可接受的水平。由于我无法在网上找到很多东西来帮助解决我的问题,所以我会尝试使用 stackoverflow,因为你们从来没有让我失望过。

4

2 回答 2

4

您需要回答的第一件事是为什么查询运行如此缓慢。假设您有以下查询

SELECT * FROM Customer WHERE CustomerID= 1

它运行缓慢。那么如何确定它运行缓慢的原因呢?键入以下内容:

EXPLAIN ALL SELECT * FROM Customer WHERE CustomerID=1

这将返回一个结果集,指示 MySQL 如何获取数据。在这里,您可以找到有关缺失索引等的线索,这有助于优化您的查询。

有关更多答案,请参阅以下链接:

http://dev.mysql.com/doc/refman/5.0/en/explain.html

MySQL表索引优化

即使您使用了映射表并且您的查询和索引不是最佳的,您的性能也会很差。

于 2012-05-04T08:56:24.950 回答
1

我想知道映射表的目的是什么

映射表用于表示“多对多”关系。例如,在您引用的问题中,有两个实体 - 书籍和学生。一个学生可以借很多书;很多学生可能会借一本书。

在关系模型中表示这一点的标准方法是通过“映射表”,其中包含书籍和学生的外键,以及与贷款相关的任何信息 - 例如开始和结束日期。

映射表确实是建模多对多关系的“正确”方式。

以及它如何加速 MySQL 查询

在大多数情况下它不会,尽管它通常比其他表示“多对多”关系的方式表现更好。如果您关心性能,@Namphibian 的答案是以金钱为起点。

于 2012-05-04T09:33:32.880 回答