重複の可能性:日時列から日付を選択するには?
しかし、受け入れられた回答の問題は、完全なテーブルスキャンを実行することです。
私はこのようなことをしたい:
UPDATE records SET earnings=(SELECT SUM(rate)
FROM leads
WHERE records.user_id=leads.user_id
AND DATE(leads.datetime)=records.date)
最後の部分に注意してください: DATE(leads.datetime)=records.date
. これはまさに必要なことを行いますが、すべての行をスキャンする必要があります。一部のユーザーは何千ものリードを持っているため、時間がかかる場合があります。
leads
テーブルには ,がINDEX
ありuser_id
ますdatetime
。
インターバル関数を使用して、そのようなことを行うことができることを知っていますWHERE datetime BETWEEN date AND interval + days
。
これを行う最も効率的で正確な方法は何ですか?