作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 CRM,其中一个查询看起来像这样:
SELECT DISTINCT tb1.customerID
FROM sales_company AS tb1
WHERE rdate BETWEEN '2016-02-01'
AND '2016-02-14'
AND type='payment'
AND customerID
NOT IN (SELECT customerID
FROM sales_company
WHERE rdate < tb1.rdate
AND type='payment'
GROUP BY customerID)
GROUP BY customerID`
通过这个查询,我得到了新客户在查询期间第一次支付了多少费用。
问题:我在每家公司都有很多表,所以我需要在每次刷新时运行此查询大约 30 次。
是的,我知道这很糟糕,我构建的这个系统很旧(7 年前),除了更改此查询外,我不能过多地接触她。
有一些很好的建议,你们知道如何改进这个查询以获取末尾的行数吗?
谢谢!
最佳答案
能否请您发布表类型和解释以及您的查询以查看问题所在。
EXPLAIN SELECT DISTINCT tb1.customerID
FROM sales_company AS tb1
WHERE rdate BETWEEN '2016-02-01'
AND '2016-02-14'
AND TYPE='payment'
AND
NOT EXISTS (SELECT customerID
FROM sales_company
WHERE customerID = tb1.customerID
AND rdate < tb1.rdate
AND TYPE='payment'
)
GROUP BY customerID;
我只测试了 10000 行
关于MYSQL NOT IN 函数 - 如何改进并更快地获取它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35386288/
我是一名优秀的程序员,十分优秀!