我在postgresql中有两个表:ITEM(ID,TYPE)和ITEM_DATA(TS,ITEM_ID),关系为1:n。第一张桌子很小,第二张桌子很大。我想知道从ITEM表中选择每一行的ITEM_DATA表的最小值和最大值的最佳方法。在这一刻我有这样的选择,但它的速度太慢:如何从另一个表中选择MIN和MAX
SELECT
I.*,
(SELECT MIN(ID.TS) FROM ITEM_DATA ID WHERE ID.ITEM_ID=I.ID) AS MIN_TS,
(SELECT MAX(ID.TS) FROM ITEM_DATA ID WHERE ID.ITEM_ID=I.ID) AS MAX_TS
FROM ITEM I
WHERE I.TYPE = 'X';
有一个在表的主键ITEM_DATA它有两个部分:TS和ITEM_ID而且还对其中有一个表项的索引段:TYPE。
有没有办法让这个查询更快?
ITEM表中有多少行,在那里,有多少行的ITEM_DATA表中受益? ITEM_DATA还有很多其他列吗? –
ITEM有数百个,ITEM_DATA有数百万个 – miloxe