我有两个名为items
和item_records
的数据库表。在表items
中,有一个名为current_item_record_id
的字段,它是item_records
表中的最新记录。
以下是两个表格中的示例:
表项目:
Item ID | current_item_record_id
100 NULL
和 表项目记录
ID | item_id | created_at
500 100 2018-01-12 14:48:37
501 100 2018-01-13 14:48:37
501 100 2018-01-14 14:48:37
最终结果应该是这样的:
Item ID | current_item_record_id
100 500
问题:我需要更优化的查询来查询大表内容。
以下是我的查询:
UPDATE items
SET current_item_record_id = (SELECT id
FROM item_records
WHERE item_id = items.id
ORDER BY created_at desc LIMIT 1)
WHERE items.current_item_record_id IS NULL;
答案 0 :(得分:0)
对于此查询:
UPDATE items i
SET current_item_record_id = (SELECT id
FROM item_records ir
WHERE ir.item_id = i.id
ORDER BY ir.created_at DESC
LIMIT 1)
WHERE i.current_item_record_id IS NULL;
您需要item_records(item_id, created_at)
和items(current_item_record_id, id)
上的索引。
这应该足以提高性能。