Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bPyZa-0002tF-Gq for pgsql-performance@arkaria.postgresql.org; Wed, 20 Jul 2016 20:58:30 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1bPyZY-00034C-K6 for pgsql-performance@arkaria.postgresql.org; Wed, 20 Jul 2016 20:58:28 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1bPyXs-0001E4-AA for pgsql-performance@postgresql.org; Wed, 20 Jul 2016 20:56:44 +0000 Received: from mail-co1nam03on0085.outbound.protection.outlook.com ([104.47.40.85] helo=NAM03-CO1-obe.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1bPyXo-0003N2-4C for pgsql-performance@postgresql.org; Wed, 20 Jul 2016 20:56:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=BlueTreble.onmicrosoft.com; s=selector1-bluetreble-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=C8iVLUnh2NOLbKbuf9GxA/hYboCMazCebzdyLSF5Z0g=; b=RlIdAoOyHr2WjJT7UxILgvHSlYuXd4vbryIue2s4aY011rAH3n59uF/n/Le2U7JLYO46h5X+M4I0pQ8d9GQFTWfSJN0RJIn5aP9FKNViFH4EOU04j+EJ6MGEkMiobFk0tXuiZjsGaeZseTBcjTQDCnxsHt1PhaSutnb8ReaQ2z4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jim.Nasby@bluetreble.com; Received: from decina.local (24.242.71.15) by CY4PR11MB1637.namprd11.prod.outlook.com (10.172.71.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.544.10; Wed, 20 Jul 2016 20:56:35 +0000 To: "pgsql-performance@postgresql.org" From: Jim Nasby Subject: Poor choice of backward scan Message-ID: <7ead14dc-2bb1-0f20-dc05-93804d118798@BlueTreble.com> Date: Wed, 20 Jul 2016 15:56:31 -0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [24.242.71.15] X-ClientProxiedBy: SN1PR17CA0018.namprd17.prod.outlook.com (10.169.33.156) To CY4PR11MB1637.namprd11.prod.outlook.com (10.172.71.13) X-MS-Office365-Filtering-Correlation-Id: 4efcd618-a5c3-4449-6f8c-08d3b0e0564c X-Microsoft-Exchange-Diagnostics: 1;CY4PR11MB1637;2:YXhxGowZKmGwxjWRF1PVaeQrqoDcrV1syjvOeCStRV8SrNllkQ0fpA9aI4xTzOaUFW2kM8fJjZmcSgvfmc4hnDAg7mwS2M+LrmjBZV5u4ofBDQi7ktuIlbRJ4goEQWuJJwoyQBL5A557sxC6YOOSwFi6xrOYx3G9Skc3gOW0drGoAIJ9PF/d8VzYMHSM0F/F;3:EYRZeG08LzwezifypTBqDUmj8M/nt4BZO6dwbQjc218xrRJO4Jcr3mcwkCeImnrAx4XbSGqYQ4BGR3CkTpBUkpPljC19Elbks2x8zKJCI6D5gIogp8YVvHJrDD5gFllL;25:X8ESp59XQ+dk//OF8UmDscHM+KuDCgdmMz0pgXqnoXvtZxhvds/uDzc7pCCoGnSl/HaEW3zChenQYxmJpWbSeExeqktiuEL4bytRqzz0yVqrof7MUIc+iNOHbK2qAIP6xnLH4ZoOVEmLdv91idVWYyMgqgJ9d+3Cu0tpGSjWXQG5I8vmkSxTtCZirHZl08JCEisJTY9+KdLx8cpXT2bzScvewFE218T42Sft/KWHkgFegw7P+10qssbJ0tx1XbyRZ4Q+zvHzjx7EIJYkYBh8juRuv5QMDiIxQxeaN+gIbqtQYMsOmGyR+OOs7Y0Va5V4jYVbRHPQ4sTVv8z/qforuHuggju39YcPXMEMiUCea0PBftamYqZe+idf23/hjmHK4F7uPRXmsItGxEPm8ZjV3g==;31:Z4ThwbTYjlJbcUKRkhenw3QTvg6qL0J8tO909kRcaE3k0l3jPBFV9E8It3grEIwsWVJQUfzAipE4JjXNt6ojg8P1fpE22F47T07hxr2JuEi34PbuLwJdNMPCuatCLg5eSDZemBrWLcUM4oY8S4IkaLeZ7eT7xENNPjfTd0ZR7GkQTPDqhm6olBWnUrHCXTSpAykACRulE6Sr7YW/Akfa2g== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY4PR11MB1637; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040130)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041072)(6043046);SRVR:CY4PR11MB1637;BCL:0;PCL:0;RULEID:;SRVR:CY4PR11MB1637; X-Microsoft-Exchange-Diagnostics: 1;CY4PR11MB1637;4:T+kapyVD7EdgVgwms6ajMDmCRPyx4tHiOjKI/i/nqxHUs7bMMHAlG8eB/Ivdfp5U1SgvHNvwQJyofatMw1Y3Lf0n/uzOdkUMEw58MMpKeEV3JiuBkpV8yGVFV81yzxlh2RkWxFaHP9Zdtz4nFtZZuKmDcdyA+8JeES+XCxCaaQsZzMxAJ16fVSn7X06raT/lRVAcc7Nn1yxIZTjPHREBSZdAbihOk3MiQWTZbpV8h8IXe/D87Zxz3Yx0p2fPvout0vO8tTE4TVTa/Q95E7dXTBJCCYE+QTomBuA3tNVTNLboTI+Oik0O9nc84EoZcWJHDDaaH4GzAreD4wmowr3sqORt+3VjOY1IPMHVXEO85clDC+1kUmPQbN1/U6agXv8IXFdn1DSOBpXye1dUQnfOdHLzCitq1NATcdNW0AK2QaA= X-Forefront-PRVS: 000947967F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(979002)(6009001)(7916002)(189002)(199003)(586003)(189998001)(65956001)(65806001)(6116002)(97736004)(4001350100001)(66066001)(3846002)(47776003)(107886002)(110136002)(2906002)(8676002)(2870700001)(68736007)(105586002)(92566002)(86362001)(31696002)(50466002)(23676002)(5640700001)(42186005)(81156014)(2351001)(106356001)(31686004)(101416001)(19580395003)(50986999)(54356999)(33646002)(77096005)(15975445007)(7736002)(450100001)(305945005)(36756003)(7846002)(2501003)(64126003)(229853001)(83506001)(16601075003)(81166006)(65826006)(85282002)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR11MB1637;H:decina.local;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Received-SPF: None (protection.outlook.com: bluetreble.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjExTUIxNjM3OzIzOng2c0xCSkxQLzhobWhMa1pJTTQrRm1NMXdq?= =?utf-8?B?aHpERzNUNHI0eGFtKy81RnN1QmU2STV3dC96Tm1mbGNPaGk5MGliOU0yRW5z?= =?utf-8?B?eU1DUWwvUHJmbkxZYnYxZXdSaDBRKzF2WEsya2NGb0ZlY0MyTUtzT0RTVS9Q?= =?utf-8?B?Ny9jSlNDajA3OUVicFJ3YmpreS9LbTdBWFQxNnBjalA2c1pEMlZGWFhQUkJT?= =?utf-8?B?azl2andzVS9TbmwzbURURnp3SzVCRHhUdnBiV0p1M25IMDFyZHN1c3dRcXJR?= =?utf-8?B?VE4xeVBTMWtpbWgwSnlhbnNoM3NBWGJVVm1zRTB5U1dIRDgvTEtyTDN1NWEv?= =?utf-8?B?aHk5V0VGZzM0RHZRVjl0YmM1UXRJSG9CU3FUNUdJa2l3eVB6K2JPSlQ5N04z?= =?utf-8?B?S09Yc2puWFFnOUxFcHMxN3RiOWlPTHVWc3hzYWhaSHJXWDEySVVjM2xRR3c2?= =?utf-8?B?L0lBbjA3WVM3eXF1UHJ1VW4xYWxrMW02RldTYjVCWnJzTlhteEh5cHdLZDZ6?= =?utf-8?B?N0FuN2dDQWc1WTJiNGNFQlB2elNCKzlMRnpkbmFQbm5CQnZ2bllCN3F5RXRs?= =?utf-8?B?WHBlS21Fd2tQTFljY010Zm1RanpMWWJEelVuNWIvYlRZdkRWWnFpalRYN2xk?= =?utf-8?B?VVBaaWc1VjBDT2l5bGpqRDJKMmsyUnE2TW1XazlLY1F3aTFJcklFbkdvdExn?= =?utf-8?B?dVB6Y2p5VkxJelZlZExoLzBJVDhSOXFRdTZGSFFKaTJyK1pxbHNKaUhCYnhD?= =?utf-8?B?ZzZIRktnM3RyOUFuUUcyS2pYWnZLbUU0RzY2SDQ2ZHBUbnc4RTA4elZHZXJk?= =?utf-8?B?V0E3TWlIQ0N1WUd2aWF2QVY1RkNQdDZkUm1ST2RTVzFWU3g1ZjVNTCt4ZnZP?= =?utf-8?B?aUFaMjZ4VjdaTmpiRTdvZENuWStGQ0Y3TmxxQVpJSVlzM2x3Z2dGSGpPY1ZN?= =?utf-8?B?cGNQNjhjN1E1QjBRbUp3ZGZvMkx3ajVVM0ZXcXVuQ2E1clBqaFpBQlh5RFZX?= =?utf-8?B?Yk1SRGw0Z1FRSk9hd0RLdEcwekxyK3RUWGVxYzBsTW5BZjQvdlh6N1BUc0Jw?= =?utf-8?B?aUwxak5jdENlNENvQjVER2xnOTRpd3J1RFoybVpVU0o4Mk14V2g1YzRDcnIr?= =?utf-8?B?a2tOR3RwSWJUWWRuUkZGOFJOZmljSDZwV0hoV25QWVZ1SVYveEVDRFora3pm?= =?utf-8?B?RDQ3ZHpseVFjbS9Qa3FNeE5JM0ErV2JtZ0dtOTRNTzg2KzN6WFZSOWdTTEMw?= =?utf-8?B?S1UyVlBFaEtTUlg4cXhYMXJENm9WTmRCOWdMUCtoM2t3WUFQbndRM1ZoWWYv?= =?utf-8?B?Mkg5NEg3SVp6am43Y3pFV3JHdnVReFZpQVpNcVJjMkYzemRRSmhjUlBnZURW?= =?utf-8?B?MXNBcmV6WWVOaVkwZ29rS0NBZWoxb2RnSmJ2Y0xuSU1JS09FTW9WM1VXN00x?= =?utf-8?B?K05lQTJHQXI3ZktnbEJNTDJMYllnMEJlM0lXTTR1S2Z4ZVZ2VTNEd0h6NVUw?= =?utf-8?B?RjgycVdFWHdQYUpSNitrUUpENHVZOWx1QmtLMmNQbmMrMW5xYWVKNXRXaTVL?= =?utf-8?B?YlBMTE5xanQ5U0hXM1o5R3RZTnVBZE1OWGdrTXl6b1ZURGFqR0pZUmlkMjVF?= =?utf-8?B?cDhHK0grankzWWxFcW9BRSsrRzZrd3VtM01YVTUwSno0R3N5elZMcFU1MTNv?= =?utf-8?B?bm5vNDc5enhrb3VTOG5ZMjQ5ZnkzdTNOd29WQkJqVGY0OFVxeFR3cHhrV2tv?= =?utf-8?B?MWRkN0pQNTZhVlFkdTBNMFNsajY4N2F6WitxbGlQN2Q0a0l1U24vYzI5NEpN?= =?utf-8?B?SFBFR1Nwbk1hbHozU2JrRUtOQlB2V0dMdTJmRGt3MGxRS0NYU05KOFhKYVZV?= =?utf-8?B?dytBZHkvbXJ6TGZEVnRhM1VzL3ZWTlpjSFlRWE5sVWJoUmx1a3kycit5clhh?= =?utf-8?B?SFZheGc5am53PT0=?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR11MB1637;6:6YbDpb78UO50DWZeCaKmn7r/xJRrYPIAJd1xWla7okLzF2FhMsETiBNV/Ycq8T6X3iEu6VIOAbjtl3d+fxfpzkOWK7SVWImuvrQt4Sm7gHSsJ9ZxQ6BJNM5wyrmjotm/qEL+l+cpIFfsGGmvhJl1uppBGnjZ8g5/SpQFS3QsNlDblqNspizm2nIjHj/GtXTUa3Z0e53VtMPtBIpIoJ3+hyYEPkGEwGDcY/uNEuqrV0Pq+Ywrtxm9Em8nBORylrnC5H3AAGWbs5/CZh8LOxF2BBagr/An6KD7KcT1FLoC6wgF1kXiTbrxzp7m4GULANdD;5:t5PsiPdJI619fhbvUaP92LfkgR4iqIzi/NuE+1rXwofWHqJFF76ngOYg3iqEkPjDPB9/8xiw2/9P7nCv+ftiAjNz6+D/HV6H6JIeuO3by0TWj+uL0F6lowbNyNFoQCX/OgXiNAVeygsRQRdA5bOWgw==;24:85MFztXElW5Y0dL9yH/7dAjM8mgzu3I8Bg7XwsICHBE5Lk2RWMednS5cyWdrAlWmpYJvgHvZvIWDHEKj1EB/FaYOLtb4vMO+sNEC6jzi1LQ=;7:qC0l2JwtlHwq7y/YdzotjeXsBFA5SKU2/mU4MAGgK+Irn7qHs+PL+i7PmicYPSVT/w9wc0yl6g0VDpUbzvargg5oHwIQ9yOUgaa3TfBb5DH2GOUmcbZyFJWvYyZu+SqAEUtOdJiDtJdwhF9F8a7ITnZOSybNsbkohsZaVn8d6UDL8ASIZJtiNs69msi2VT7Briiy8b29h4+rN6qYAsE/OPdmypAXNnyiBssGiM2YpQyuEBUUiy9j6jCwMbn+NQy8 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: bluetreble.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jul 2016 20:56:35.4423 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR11MB1637 X-Pg-Spam-Score: -1.9 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-performance Precedence: bulk Sender: pgsql-performance-owner@postgresql.org Came across this from a client today. Was able to work around it with a fence, but wanted to report it for the next time Robert generates statistics on planner problems. ;) It appears the problem is the planner couldn't recognize that even though there's ~400k rows for user 3737558, very few of them will actually match the rest of the predicates (specifically m_ident). > data=> explain analyze SELECT id FROM table_name WHERE user_id = ‘36’ and m_ident= 'x12345' AND deleted IS NULL ORDER BY changed DESC LIMIT 1; > QUERY PLAN > ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ > Limit (cost=240.31..240.32 rows=1 width=12) (actual time=0.188..0.189 rows=1 loops=1) > -> Sort (cost=240.31..240.32 rows=1 width=12) (actual time=0.187..0.187 rows=1 loops=1) > Sort Key: changed > Sort Method: quicksort Memory: 25kB > -> Index Scan using table_name__user_id_deleted on table_name (cost=0.56..240.30 rows=1 width=12) (actual time=0.131..0.178 rows=2 loops=1) > Index Cond: ((user_id = 36) AND (deleted IS NULL)) > Filter: ((m_ident)::text = 'x12345'::text) > Rows Removed by Filter: 63 > Planning time: 0.371 ms > Execution time: 0.357 ms > > (10 rows) > > > data=> explain analyze SELECT id FROM table_name WHERE user_id = '3737558' AND m_ident = 'xxx1234' AND deleted IS NULL ORDER BY changed DESC LIMIT 1; > QUERY PLAN > ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Limit (cost=0.43..177673.83 rows=1 width=12) (actual time=17151.010..17151.010 rows=0 loops=1) > -> Index Scan Backward using table_name___changed on table_name (cost=0.43..888367.40 rows=5 width=12) (actual time=17151.010..17151.010 rows=0 loops=1) > Filter: ((deleted IS NULL) AND (user_id = 3737558) AND ((m_ident)::text = 'xxx1234'::text)) > Rows Removed by Filter: 16238592 > Planning time: 0.189 ms > > Execution time: 17151.042 ms > > (6 rows) > > With fence... > > data=> EXPLAIN ANALYZE SELECT id FROM (SELECT * FROM table_name WHERE user_id = 3737558 AND m_ident = 'xxx1234' AND deleted IS NULL OFFSET 0) a ORDER BY changed DESC LIMIT 1; > QUERY PLAN > ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > Limit (cost=221150.73..221150.74 rows=1 width=12) (actual time=1391.148..1391.148 rows=0 loops=1) > -> Sort (cost=221150.73..221150.75 rows=6 width=12) (actual time=1391.147..1391.147 rows=0 loops=1) > Sort Key: a.changed > Sort Method: quicksort Memory: 25kB > -> Subquery Scan on a (cost=4414.63..221150.70 rows=6 width=12) (actual time=1391.115..1391.115 rows=0 loops=1) > -> Bitmap Heap Scan on table_name (cost=4414.63..221150.64 rows=6 width=170) (actual time=1391.113..1391.113 rows=0 loops=1) > Recheck Cond: ((user_id = 3737558) AND (deleted IS NULL)) > Filter: ((m_ident)::text = 'AAL3979'::text) > Rows Removed by Filter: 386150 > Heap Blocks: exact=119205 > -> Bitmap Index Scan on table_name__user_id_deleted (cost=0.00..4414.63 rows=247407 width=0) (actual time=150.593..150.593 rows=397748 loops=1) > Index Cond: ((user_id = 3737558) AND (deleted IS NULL)) > Planning time: 1.613 ms > Execution time: 1392.732 ms > (14 rows) > > Relevant indexes: > > "table_name__enabled_date_end_enabled" btree (date_end, enabled) > "table_name__user_id" btree (user_id) > "table_name__user_id_deleted" btree (user_id, deleted) > "table_name___changed" btree (changed) -- Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX Experts in Analytics, Data Architecture and PostgreSQL Data in Trouble? Get it in Treble! http://BlueTreble.com 855-TREBLE2 (855-873-2532) mobile: 512-569-9461 -- Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance