有没有办法有效地重写 SQL 查询?

Is there a way to rewrite the SQL query efficiently?

我知道,这可能是一个非常基本和简单的 SQL 问题,但我正在寻找一种方法来改进下面的 SQL 语句。

SELECT 
    ANY_COLUMN
FROM 
    MY_TABLE
WHERE 
    ATTR1='ABC'
AND 
    ATR2 = 'DEF'
AND 
    CAST(STRTOK((
        SELECT 
            ANY_COLUMN 
        FROM 
            MY_TABLE
        WHERE 
            ATTR1='ABC'
        AND 
            ATR2 ='DEF'
        ), '.', 4) AS DATE FORMAT 'YYYYMMDD') 
    > 
    CAST(STRTOK('sometext.sometext.20100101.txt', '.', 4) AS DATE FORMAT 'YYYYMMDD');

查询给了我我正在寻找的结果,但我怀疑它是否非常高效。 如您所见,我在相同的 table.

上针对相同的属性过滤了两次

有没有办法提高这个查询的性能? 也许是自我加入?

我认为没有必要使用子查询

SELECT 
    ANY_COLUMN
FROM 
    MY_TABLE
WHERE 
    ATTR1='ABC'
AND 
    ATR2 = 'DEF'
AND 
    TO_NUMBER(STRTOK(ANY_COLUMN, '.', 4)) > 
    TO_NUMBER(STRTOK('sometext.sometext.20100101.txt', '.', 4));

此外,要有效地处理查询,需要在 (attr1, atr2) 上建立索引:

create index ix_mytable_attr1_atr2(attr1, atr2) on MY_TABLE