Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hk8E8-00007f-So for pgsql-performance@arkaria.postgresql.org; Sun, 07 Jul 2019 14:33:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hk8E6-0006p1-SI for pgsql-performance@arkaria.postgresql.org; Sun, 07 Jul 2019 14:33:14 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hk8E6-0006jO-DR for pgsql-performance@lists.postgresql.org; Sun, 07 Jul 2019 14:33:14 +0000 Received: from mout.gmx.net ([212.227.17.21]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hk8E2-0004vk-DJ for pgsql-performance@lists.postgresql.org; Sun, 07 Jul 2019 14:33:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1562509982; bh=4Ss5M6s3fvLOpJRHG39yPf588KuTKe7c6n9ic3ynT3I=; h=X-UI-Sender-Class:Subject:To:References:From:Date:In-Reply-To; b=B76GWLXlpUWNVNmeK65j4/Z3qGNtJVVj1hP90zfitqyoepjeKUM68+WgB9yuyY1OO wBJMHr4lVJYGjHj1LimESyEx7p42LPab5W7X7OYE5EZB09F8T05WZ9CxNP9QnuBiyF MYvmhFvVTacU5frpwRVS6l3NvYfkXAjmQIC3OddY= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.178.37] ([93.104.80.247]) by mail.gmx.com (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MpDNf-1iI9ez1aPf-00qmq7 for ; Sun, 07 Jul 2019 16:33:02 +0200 Subject: Re: Optimizing `WHERE x IN` query To: pgsql-performance@lists.postgresql.org References: From: Thomas Kellerer Message-ID: <86b8a755-2fa4-f7c2-8b0b-3290773feb97@gmx.net> Date: Sun, 7 Jul 2019 16:33:00 +0200 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.21) Gecko/20090302 Thunderbird/2.0.0.21 Mnenhy/0.7.5.666 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: de-DE Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:l1vCF9NdtyF0BH73zKGUphizFULjaSu51lRnTpC5njk+8YeR8y4 WILU4IETTVcDiVyWLwiDmrR4o9C+e4zpzeRgFqn6eV2MEsRxd5iDvw5HXyH3HroKajJ63u3 TEP3PUIXWMSdOfLBcbxH0zLm3NQQXUCJyocY8Uo8E6MlEU1FnUgmzCX9ahBDANwgYhCJ3X2 WueLdMKBWMdM97CF5c3BQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:843GL/0+EYg=:1pzZd3Rb288uDAlXCfGUgS EjzEhLW9SGg3akWCiw/RJwZhfVJ0jcCtHiuhAfHSzXDZwrfHPD9xXVNi8pewa4FX0eJwbENxq QXSKySnz8Me7oRxy+UH+4yXWbGXfCXfeXjXUGP2+FXJ0lywKxZgc66WzQWfym9vqAnD+rHnms 6Atzu99CI3ICnK2EwJnaWgh8dc40M4xlMDzovmb4PfpfXPIjTdwxalqplO6nUG4xh31onTA5y Bm7/3BJRKG8Lj06KbOsvOTK3vrZWd0Ltqoe0Vue7/3D8KsmFSbpSLTbf/FQo70rsAEAynJxLB Xd4RwNC3wMzapAcwyjBk6DZYWLlTj28zymTc08/EcH9dEf0xoLKEWALrDqBPLhOmLKVRIg67L 2wsvyNh9q9shfH4P2+7oks0RXIER4JiYksWkaMKo5M+RmZcUb/fZyGGTTaWLoY0/F40cUBcLD vjjkpYTntkwlcqgY3bvFbAphMwHv5hIXsbYQNTnwBqrtTeA+AZgiglu3foGqj46BHEPLl10Pt t6y/+5KMHr4UJ5QhuYdo4ACl9XQ0HAuubuuI9aLa58Mvcd/pOkQgCiHIUEveuGeAawnPk1akR Rlk21vC1qT510nYR3EUe5J/36eB37Nsq0BoEkWUW87qdm7/zJVO6X8Ui+OtvKku4uzVSydxLW vBC2UVVlMJ/RI2k+4LLGEzCCvkCT2Z9LbSYts15R6o8CPF0LB0hkdwREbRpXcu46M9reuUt9H 2Uft4fuoL216esAuw8F4dtd39Y4yywPlMsim/GcqmG+a10lX1A59VEiXDxTcJeTsXlF38FsTb VITvUDFKQHN2hxOg42GbSXHjr5y1+BClwjw3Exem9bhs4UAwCytPfT+AmtjJSg7H8vOSO7H+h U3MMKQSeiN5GlcSSZVTMsznuxls/pECiEOo/7vPMj0Fgi/SJQ9kKvSlu/wfZ9bGZuehYIPlNH tAlxHeJ7S1fTM2z247jALrLaU+N11/18cWUmT++p/N8sbnBNltOsh2vyRG6Iv5cxMrdNgQnEh Jy7ZYamiM5wPhRDmF9ow4wi0pvWMLlA3hG8vqxn7J/ZoNsx2bmac3iT1N9QLkYZeIpNEozFGQ 5gbyIiJAAXa0KHkZ4ZzRUiahBMfE6P3OLBD List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk Omar Roth schrieb am 07.07.2019 um 15:43: > Currently, the query I'm using to generate a user's feed is: > > ``` > SELECT * FROM channel_videos WHERE ucid IN (SELECT unnest(subscriptions)= FROM > users WHERE email =3D $1) ORDER BY published DESC; > ``` You could try an EXISTS query without unnest: select cv.* from channel_videos cv where exists ucid (select * from users u where cv.ucid =3D any(u.subscriptions) and u.email =3D $1); Did you try if a properly normalized model performs better?