mysql - 优化MYSQL大数据查询

标签 mysql left-join query-optimization

是否有更好的方法来编写此查询,因为它在大约 400k 行中进行搜索并需要 50 秒才能执行?

SELECT pfile_print_media_id
     , market.market_name
     , full_name
     , image
     , pfile_date
  FROM pfile_print_media
  LEFT 
  JOIN pfiles 
    ON pfiles.pfile_id = pfile_print_media.pfile_id
  LEFT 
  JOIN publications 
    ON publications.publication_id = pfile_print_media.publication_id
  LEFT 
  JOIN clients 
    ON pfiles.client_id = clients.client_id
  LEFT 
  JOIN client_markets 
    ON client_markets.client_id = clients.client_id
  LEFT 
  JOIN market 
    ON market.market_id = clients.market
 WHERE pfiles.media_type =  'PRINT'
   AND clients.market = 17
    OR client_markets.market_id = 17
    OR client_type = 'INTERNATIONAL'
 GROUP 
    BY pfiles.pfile_id
 ORDER 
    BY pfiles.pfile_date DESC
 LIMIT 4

解释查询输出:

enter image description here

最佳答案

如果没有使用出版物表中的列 - 可能会用子查询替换联接以仅检查键是否存在将加快查询速度。

关于mysql - 优化MYSQL大数据查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48487472/

相关文章:

mysql - 如何随机生成数据库中不存在的外键名称?

sql - 禁止 MySQL 对查询使用全表扫描

mysql - 为什么 MySQL 在使用 DATE (`table` .`column` 时会删除我的索引)

Mysql连接两个表

SQL 计数不存在的项目

mysql - JOIN 以奇怪的顺序完成;搞乱 ORDER BY?

javascript - Angular、Laravel 4 和 MySQL 数据库最佳实践

mysql - 使用 phpMyAdmin 访问多个远程服务器

php - mysql php - 数据没有完全进入数据库

mysql - 我怎样才能合并连接?