通过结合使用UNION和JOIN查询,可以高效地执行性能并快速检索MySQL数据库上的记录?

情况:我需要使用PHP从运行在本地服务器(appserve)上的MySQL(版本8.0+)数据库中的三个表中检索和显示网页上的数据。

问题:我有一个有效的查询,但是检索数据花费了太多时间。我有44,000多个记录,我的机器是Windows 7 64位,具有4GB内存的Intel Core i3(我之所以这样说是因为,也许较低的机器以这种方式运行是很自然的)。

前两个表都由author(书的作者),author_id(作者的唯一自动递增ID)和title(书的标题)组成,除了ID相同外,其他两个都相同。 INT,而第二个是VARCHAR,所以即使我也想合并我不能,而第三张表则包含有关该书的其他细节,但是在此示例中,我仅使用author_id和pub_date(该书的出版日期)来演示情况。

一本书可能会遇到多个修订版本,因此书名和pub_date之间的关系是一对多的,但是在网页中,我只想显示最新的修订版本或出版日期,因此要使用MAX和GROUP BY。

我的查询是:

SELECT a.author
     , a.title a.author_id
     , b.title
     , b.pub_date 
  FROM 
     ( SELECT author
            , title
            , author_id 
        FROM authors_table 
        UNION 
       SELECT author
             , title
             , author_id 
        FROM old_authors_table
       ) a 
    LEFT 
    JOIN ( SELECT author_id
          , title
          , max(pub_date) AS pub_date 
    FROM details_table 
  GROUP 
    BY author_id
     ) b 
   ON b.author_id = a.author_id;