Като offer_date
е число и е с по-ниска точност от реалните ви дати, това може да свърши работа...
- Преобразувайте реалната си дата в низ във формат YYYYMM
- Преобразувайте тази стойност в INT
- Сравнете резултата с вашата offer_date
SELECT
*
FROM
offers
WHERE
offer_date = (SELECT CAST(to_char(create_date, 'YYYYMM') AS INT) FROM customers where id = '12345678')
AND offer_rate > 0
Освен това, като извършите всички манипулации върху create_date
извършвате обработката само на една стойност.
Освен това дали сте манипулирали offer_date
няма да можете да използвате никакъв индекс в това поле и така да принудите SCAN вместо SEEK.