Thread: Index on a COALESCE function

Index on a COALESCE function

From
"Mark Steben"
Date:

, Hi, I'm trying to index on a coalesce function:

  The index definition is CREATE INDEX  emailrcpts_cid_coalesce_dtofpurch" btree (cid, (COALESCE(date_of_purchase, '1900-01-01'::date)))

 

A portion of the query I am trying to optimize follows:

 

 select 45198705,false,id,next_avail_senddate(id,date(send_date)) from

 (select id,timeclause_combine(date(estmileage_timeclause(service_date,mileage,last_service_date,last_mileage,

   date_of_purchase,year_purchased,10750,cid,serindex_date,id)),

   date(date_larger(date(coalesce(date_of_purchase, '1900-01-01')+timespan('45 days')),

   date(service_date+timespan('44 days')))),

   date(null),date(create_date),9,false) as send_date,last_send


I can't seem to get this index to work on the function, just on the cid column. Any ideas would be appreciated

 

Thank you,

 

Mark Steben

Senior Database Administrator
@utoRevenue™
A Dominion Enterprises Company
480 Pleasant Street
Suite B200
Lee, MA 01238
413-243-4800 Home Office 
413-243-4809 Corporate Fax

msteben@autorevenue.com

Visit our new website at
www.autorevenue.com

 

IMPORTANT: The information contained in this e-mail message is confidential and is intended only for the named addressee(s). If the reader of this e-mail message is not the intended recipient (or the individual responsible for the delivery of this e-mail message to the intended recipient), please be advised that any re-use, dissemination, distribution or copying of this e-mail message is prohibited.  If you have received this e-mail message in error, please reply to the sender that you have received this e-mail message in error and then delete it.  Thank you.

 

Re: Index on a COALESCE function

From
Richard Broersma Jr
Date:
--- Mark Steben <msteben@autorevenue.com> wrote:

>  select 45198705,false,id,next_avail_senddate(id,date(send_date)) from
>  (select
> id,timeclause_combine(date(estmileage_timeclause(service_date,mileage,last_s
> ervice_date,last_mileage,
>    date_of_purchase,year_purchased,10750,cid,serindex_date,id)),
>    date(date_larger(date(coalesce(date_of_purchase,
> '1900-01-01')+timespan('45 days')),
>    date(service_date+timespan('44 days')))),
>    date(null),date(create_date),9,false) as send_date,last_send

IIUC, indexs are only used in JOINS and WHERE conditions.  I don't see either of those in your
query.

Regards,
Richard Broersma Jr.