[OPEN-ILS-GENERAL] SQL Query Performance
Joshua D. Drake
jd at commandprompt.com
Fri Apr 26 14:43:18 EDT 2013
On 04/26/2013 11:17 AM, Galen Charlton wrote:
>
> Hi,
>
> On Fri, Apr 26, 2013 at 10:58 AM, Martha Driscoll <driscoll at noblenet.org> wrote:
>> In our database of 3,161,189 copies, cutting out the deleted copies
>> eliminates only 904 copies. Why does testing for deleted improve searching
>> so significantly?
>
> The quick answer is that the asset.copy index on the barcode column
> also includes a clause to limit the index to copies that aren't
> deleted:
Actually,
The quick (and correct) answer is that asset.copy doesn't have an index
that is on barcode. In fact the current index on asset.copy(barcode) is
actually wrong.
"copy_barcode_key" UNIQUE, btree (barcode) WHERE deleted = false OR
deleted IS FALSE
Although a valid index, the two conditions within the index are
duplicative. It would be better to drop that index and just use:
CREATE UNIQUE INDEX copy_barcode_key ON asset.copy(barcode);
PostgreSQL will grab the appropriate barcodes and then filter out the
results based on the WHERE clause.
Sincerely,
Joshua D. Drake
--
Command Prompt, Inc. - http://www.commandprompt.com/
PostgreSQL Support, Training, Professional Services and Development
High Availability, Oracle Conversion, Postgres-XC
@cmdpromptinc - 509-416-6579
More information about the Open-ils-general
mailing list