我想知道映射表的用途是什么,以及它如何加速 MySQL 查询。我正在努力加快一个缓慢的 MySQL 查询,我遇到了这个stackoverflow 问题。评论表明,映射表不仅可以加快连接两个表的查询,而且它们是构建数据库的正确方法。
我有一个非常相似的表结构,具有一对多的关系。随着表的增长,查询执行时间继续攀升到不可接受的水平。由于我无法在网上找到很多东西来帮助解决我的问题,所以我会尝试使用 stackoverflow,因为你们从来没有让我失望过。
我想知道映射表的用途是什么,以及它如何加速 MySQL 查询。我正在努力加快一个缓慢的 MySQL 查询,我遇到了这个stackoverflow 问题。评论表明,映射表不仅可以加快连接两个表的查询,而且它们是构建数据库的正确方法。
我有一个非常相似的表结构,具有一对多的关系。随着表的增长,查询执行时间继续攀升到不可接受的水平。由于我无法在网上找到很多东西来帮助解决我的问题,所以我会尝试使用 stackoverflow,因为你们从来没有让我失望过。
您需要回答的第一件事是为什么查询运行如此缓慢。假设您有以下查询
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 查询
在大多数情况下它不会,尽管它通常比其他表示“多对多”关系的方式表现更好。如果您关心性能,@Namphibian 的答案是以金钱为起点。