我有两张表,一张有100000条数据记录,一张“不感兴趣”
“businesss”表有一个“BusinessID”大约10个其他信息列
“notinterest”表有一个“BusinessID”和一个调用日期。
目前我正在过滤数据,通过检查是否存在,如果不感兴趣,DeDeFoice不到42天,那么不要在SELECT中显示它。(代码如下)。

SELECT * FROM businesses where PostCode like '" . $pcode . "%'
and BusinessType like '%$btype%'
and BusinessID NOT IN (SELECT BusinessID FROM telesales.notinterested WHERE NOW() BETWEEN DateOfCall and (DateOfCall + INTERVAL 42 DAY) )
and AppointmentDate is null
ORDER BY RAND() limit 100"

一开始还不错,但现在“不感兴趣”有大约30000条记录,特别是一个字母的邮政编码,变得非常缓慢。
我在bussiness表中添加了一个名为“notinterest”的新列,我想在其中添加一个日期。
将DateOfCall从“notinterest”表迁移到“businesss”的新列中最简单的方法是什么?我有点担心,因为它的实时数据,没有太多的时间

最佳答案

若要回答原始问题,可以运行此查询以更新“添加日期”字段。

UPDATE businesses
INNER JOIN
(SELECT BusinessID, MAX(DateOfCall) maxdateofcall FROM telesales.notinterested WHERE NOW() BETWEEN DateOfCall AND (DateOfCall + INTERVAL 42 DAY) GROUP BY BusinessID) recentnotinterested
    ON businesses.BusinessID = recentnotinterested.BusinessID
SET businesses.notinterested = recentnotinterested.maxdateofcall;

10-07 12:08