mysql - 优化一个 SQL 查询

标签 mysql sql

我需要运行查询以从数据库中获取一些数据。问题是我使用的查询有效但需要很长时间。

SELECT SHH1.CUST_NO,
       SHH1.CUST_NAME,
       ADDR.BVADDREMAIL 
FROM SALES_HISTORY_HEADER SHH1
INNER JOIN ADDRESS ADDR ON (SHH1.CUST_NO=ADDR.CEV_NO)
INNER JOIN CUSTOMER CUST ON (SHH1.CUST_NO=CUST.CUS_NO)
WHERE CUST.HOLD = 0
AND SHH1.CUST_NO IN (SELECT SHH2.CUST_NO 
                     FROM SALES_HISTORY_HEADER SHH2
                     GROUP BY SHH2.CUST_NO 
                     HAVING Max(SHH2.IN_DATE) < '20120101')
GROUP BY SHH1.CUST_NO,
         SHH1.CUST_NAME,
         ADDR.BVADDREMAIL

我不是很擅长这个所以想知道你们中的任何人是否可以帮助我?谢谢。

最佳答案

我认为您不需要子选择。以下应该给你相同的结果:

SELECT SHH1.CUST_NO,SHH1.CUST_NAME,ADDR.BVADDREMAIL 
FROM SALES_HISTORY_HEADER SHH1
INNER JOIN ADDRESS ADDR ON (SHH1.CUST_NO=ADDR.CEV_NO)
INNER JOIN CUSTOMER CUST ON (SHH1.CUST_NO=CUST.CUS_NO)
WHERE CUST.HOLD = 0
GROUP BY SHH1.CUST_NO,SHH1.CUST_NAME,ADDR.BVADDREMAIL
HAVING Max(SHH1.IN_DATE) < '20120101'

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

相关文章:

mysql - 如何在curdate mysql中添加小时和分钟

mysql - 如何在 phpMyAdmin 中创建 NVARCHAR 列?

mysql - 如何使用 MySQL 主键作为变量

Php Form 不会将 mysql_query 发送到数据库

sql - PostgreSQL 从一个表中选择全部并从表关系中加入计数

sql - PostgreSQL聚合查询很慢

php - 在两个不同的表中添加记录

mysql - 列出文件,计算 OK 和 NOK 的数量并按日期排序

SQL Server Reporting Services 2005 - 如何处理空报表

mysql - 为什么order by子句可以使用索引?