我正在尝试从Inner Join表中提取最新的价格数据。价格会在一天中不断更新,但不一定是凌晨更新。
当价格在一天结束时更新数据时,以下查询非常有效。但如果今天的数据为空,如何获取昨天的数据?
我以这样的格式索引列:
当价格在一天结束时更新数据时,以下查询非常有效。但如果今天的数据为空,如何获取昨天的数据?
我以这样的格式索引列:
date_itemnumber
=> 2015-05-22_12341234
。SELECT h.*, collection.*, history.price
FROM collection
INNER JOIN h ON collection.itemid=h.id
INNER JOIN history ON collection.itemid=history.itemid
AND concat('2015-05-23_',collection.itemid)=history.date_itemid
WHERE h.description LIKE '%Awesome%'
生产查询时间:0.046秒
明确一点,我希望它检查该项最新的记录。无论是今天、昨天还是之前。
以下查询提供了我想要的结果,但对于我的生产数据集,需要超过3分钟才能返回结果。随着我的数据集变得越来越大,这种方式就不再有效。
SELECT h.*, collection.*, history.price
FROM collection
INNER JOIN h ON collection.itemid=h.id
INNER JOIN history ON collection.itemid=history.itemid
AND (select history.date_itemid from history WHERE itemid=collection.itemid GROUP BY date_itemid DESC LIMIT 1)=history.date_itemid
WHERE h.description LIKE '%Awesome%'
生产环境查询时间: 181.140秒