我有这个问题:
SELECT
mt.market_coin_id AS coin_id,
mt.quantity AS quantity,
(ha.price_eur * mt.quantity) as test
FROM
market_transactions mt
JOIN historical_data ha ON ha.id = (SELECT id FROM historical_data WHERE historical_data.coin_id = mt.market_coin_id ORDER BY mt.trade_at <-> snapshot_on LIMIT 1)
WHERE
mt.user_id = 1
我想要做的是通过加入与交易日期test
匹配的第一次记录historical_data.snapshot_on
的历史定价表,即时计算价格(mt.trade_at
)
但是查询似乎很慢。
假设所有内容都被编入索引,是否有一种正确的方法可以使查询更快一些?
historical_data
ID | COIN_ID | SNAPSHOT_ON | PRICE_USD | PRICE_EUR |
------|---------|-------------|-----------|-----------|
42794 | 422 | 2017-07-31 | 0.0001353 | 0.0001152 |
42795 | 422 | 2017-08-01 | 0.0001144 | 0.0000968 |
market_transactions
ID | USER_ID | MARKET_COIN_ID | QUANTITY | TRADE_AT
----|---------|----------------|----------------|------------------------
347 | 1 | 422 | 1463.36263314 | 2017-09-01 13:55:57