Tom,
It is probably too late for this original design but it is not too late for a new data warehouse that is in development. Jared has made a recommendation for better date columns that may help eliminate these problems. I have forwarded that table design on to the application owner. Thanks for your reply. Cherie "Mercadante, Thomas F" To: Multiple recipients of list ORACLE-L <[EMAIL PROTECTED]> <[EMAIL PROTECTED] cc: ate.ny.us> Subject: RE: SQL Tuning - How to avoid TOCHAR function against a date Sent by: [EMAIL PROTECTED] 04/08/02 02:35 PM Please respond to ORACLE-L let's face it Rachel, the date column is probably incorrect as the table was designed. knowing that it is important in queries, and that the minutes cause problems during query, your suggestion should have been incorporated in the original design (or truncing the oracle_date field via a trigger). both the blessing and curse of the DATE column. great for performing date math, but a pain when it comes to queries. Tom Mercadante Oracle Certified Professional -----Original Message----- Sent: Monday, April 08, 2002 2:54 PM To: Multiple recipients of list ORACLE-L I don't think you can do it.. I mean, you could change it to trunc the oracle_date field (that eliminates the minutes) and then do a to_date of :b1 but you will still be operating on the oracle_date field. Okay, I HATE to suggest this, but since the table is small: add another field to the table oracle_date_2 as a date field. Update the table set oracle_date_2=trunc(oracle_date) add a trigger to fill in oracle_date_2 when you insert a row or update the oracle_date column create an index on oracle_date_2 and change the query to use that column --- [EMAIL PROTECTED] wrote: > > I've got the following SQL statement that is running very long on a > nightly > data load. The problem is the TO_CHAR function which is preventing > me from using the index on this small (20,000-row table). > > This is an 8.0.4 database so it is not possible for me to use > make this a function-based index. > > The problem is that the date field has minutes, etc. included and > those need to be eliminated before the comparison can be made. > That's why I can't just eliminate the TO_CHAR from both sides > of the equation. > > Isn't there a way that I can pull this function out of the select > statement > and do it in a preceeding statement? Then I could just pass in both > variables to this statement without the TO_CHAR and use my index. > > Is this realistic? How, exactly could it be done? > > > SELECT DATE_KEY > FROM DATE_DIM > WHERE TO_CHAR(ORACLE_DATE,'DD-MON-YYYY') = > TO_CHAR(:b1,'DD-MON-YYYY') > > > SQL> desc date_dim; > Name Null? Type > ------------------------------- -------- ---- > DATE_KEY NOT NULL NUMBER(5) > ORACLE_DATE NOT NULL DATE > DATACOM_DATE NUMBER(6) > DATACOM_REVERSE_DATE NUMBER(6) > DAY_OF_WEEK NOT NULL VARCHAR2(30) > DAY_NUMBER_IN_MONTH NOT NULL NUMBER(3) > DAY_NUMBER_OVERALL NOT NULL NUMBER(9) > WEEK_NUMBER_IN_YEAR NOT NULL NUMBER(3) > WEEK_NUMBER_OVERALL NOT NULL NUMBER(7) > MONTH NOT NULL VARCHAR2(30) > MONTH_NUMBER_OVERALL NOT NULL NUMBER(7) > YEAR NOT NULL NUMBER(5) > WEEKDAY_IND NOT NULL CHAR(1) > LAST_DAY_IN_MONTH_IND NOT NULL CHAR(1) > DATA_WAREHOUSE_MOD_DATETIME NOT NULL DATE > DATA_MART_MOD_DATETIME NOT NULL DATE > > > > SQL> select oracle_date from date_dim where rownum=1; > > ORACLE_DA > --------- > 01-JAN-70 > > > Thanks in advance for any help. > > Cherie Machler > Oracle DBA > Gelco Information Network > > > > > > > > -- > Please see the official ORACLE-L FAQ: http://www.orafaq.com > -- > Author: > INET: [EMAIL PROTECTED] > > Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 > San Diego, California -- Public Internet access / Mailing > Lists > -------------------------------------------------------------------- > To REMOVE yourself from this mailing list, send an E-Mail message > to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in > the message BODY, include a line containing: UNSUB ORACLE-L > (or the name of mailing list you want to be removed from). You may > also send the HELP command for other information (like subscribing). __________________________________________________ Do You Yahoo!? Yahoo! Tax Center - online filing with TurboTax http://taxes.yahoo.com/ -- Please see the official ORACLE-L FAQ: http://www.orafaq.com -- Author: Rachel Carmichael INET: [EMAIL PROTECTED] Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 San Diego, California -- Public Internet access / Mailing Lists -------------------------------------------------------------------- To REMOVE yourself from this mailing list, send an E-Mail message to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing). -- Please see the official ORACLE-L FAQ: http://www.orafaq.com -- Author: Mercadante, Thomas F INET: [EMAIL PROTECTED] Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 San Diego, California -- Public Internet access / Mailing Lists -------------------------------------------------------------------- To REMOVE yourself from this mailing list, send an E-Mail message to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing). -- Please see the official ORACLE-L FAQ: http://www.orafaq.com -- Author: INET: [EMAIL PROTECTED] Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 San Diego, California -- Public Internet access / Mailing Lists -------------------------------------------------------------------- To REMOVE yourself from this mailing list, send an E-Mail message to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).