繁体   English   中英

MySQL优化:LEFT JOIN

[英]MySQL Optimization: LEFT JOIN

我有以下3表:

出版物 (主键= 文章

article | title | pubType 

作者 (主键= * author_name *)

author_name | author_somethingelse

pub_author_map

article | author_name 

给定pubType的值,我需要选择有关文章(包括作者)的信息。 为此,我有

SELECT p.article, p.title, p.dateTime, pam.author_name FROM publications p 
LEFT JOIN pub_author_map pam ON pam.article = p.article
LEFT JOIN authors a ON a.author_name = pam.author_name
WHERE p.pubType = '$pubType' ORDER BY p.article LIMIT 10

即使使用LIMIT 10 ,该查询的时间约为29秒。 publications有1500行,而pub_author_map 3000行。

如何优化上述查询?

您可以通过使用索引来优化表。例如,在检索数据时用作外键的索引列:这是一个很好的索引指南, http://www.tizag.com/mysqlTutorial/mysql-index.php //www.tizag.com/mysqlTutorial/mysql-index.php索引将花费更多磁盘空间,但是当您对内部数据相对较多的数据库进行查询时,它们可以节省数小时。

添加指标

  • 有关专栏文章的pub_author_map

  • 列pubType上的出版物

例如这样

CREATE INDEX pub_author_idx_1 
    ON pub_author_map (article);

CREATE INDEX publications_idx_1
    ON publications (pubType);

如果INNER JOIN给出正确的结果,请使用它。 仅在需要它提供的结果时才使用LEFT JOIN。

您是否想看没有作者的文章?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM