explain analyze select coupons.coupon_id from coupons join coupons_products using (coupon_id) where coupons.user_id is null and product_id = 1000 group by coupon_id; Planning time: 0.931 ms Execution time: 676.687 ms
Try to query against another query:
explain analyze select coupons.coupon_id from coupons where coupons.user_id is null and coupons.coupon_id in (select cp.coupon_id from coupons_products cp where cp.product_id = 100); Planning time: 0.769 ms Execution time: 0.075 ms
The above has same performance with array approach:
explain analyze select coupons.coupon_id from coupons where coupons.user_id is null and product_ids @> array[1000]; Planning time: 0.211 ms Execution time: 0.075 ms
Array query and junction table query(no-join) has same performance, 0.075 ms. The advantage of array query is its planning takes less time. 0.211 ms vs 0.769 ms.
This is an observation made on denormalizing junction table to array
Happy Coding!
No comments:
Post a Comment