SQL映射表是否可以加快查询速度?你怎么用它们?

时间:2012-05-03 20:45:39

标签: mysql sql-optimization

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

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

2 个答案:

答案 0 :(得分: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 table index optimization

即使您使用了映射表,并且您的查询和索引不是最佳的,您也会有糟糕的表现。

答案 1 :(得分:1)

  

我想知道映射表的用途是什么

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

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

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

  

以及它如何加速MySQL查询

在大多数情况下,它并不比其他表示“多对多”关系的方式表现更好。如果表现是您的关注,@ Namphibian的回答就是将钱作为起点。