आइए कुछ अलग करने की कोशिश करें। मैं केवल इसकी लंबाई के कारण इसे "उत्तर" के रूप में सुझा रहा हूं और आप किसी टिप्पणी को प्रारूपित नहीं कर सकते। आइए क्वेरी को मॉड्यूलर रूप से उपसमुच्चय की एक श्रृंखला के रूप में देखें, जिसे प्रतिच्छेद करने की आवश्यकता है। आइए देखें कि इनमें से प्रत्येक को निष्पादित होने में कितना समय लगता है (कृपया रिपोर्ट करें)। अपने टाइमस्टैम्प को t1 और t2 से बदलें। ध्यान दें कि प्रत्येक क्वेरी पहले वाले पर कैसे बनती है, जिससे पहले वाली क्वेरी "इनलाइन व्यू" बन जाती है।
संपादित करें:इसके अलावा, कृपया नेटवर्क तालिका में कॉलम की पुष्टि करें।
1
select PM.receiver_id from private_messages PM
where PM.create_at between (t1 and t2)
2
select U.id, U.network_id from users U
join
(
select PM.receiver_id from private_messages PM
where PM.create_at between (t1 and t2)
) as FOO
on U.id = FOO.receiver_id
3
select N.* from networks N
join
(
select U.id, U.network_id from users U
join
(
select PM.receiver_id from private_messages PM
where PM.create_at between (t1 and t2)
) as FOO
on U.id = FOO.receiver_id
) as BAR
on N.id = BAR.network_id