У меня есть эта проблема; У меня есть две таблицы, одну я назову tableA, а вторую — tableB.
Между двумя таблицами существует отношение 1:n и в обеих из них есть поля даты; позвольте мне объяснить на примере
TableA id|dateA|others TableB id|id_tablea|dateb1|sold|dateb2
Соединение между этими таблицами тривиально, моя проблема в том, что мне нужно фильтровать по дате; как требование, я должен использовать d
1) dateb2 тогда и только тогда, когда продано = 1 (если запись в таблице b присутствует) 2) else dateb1 (если присутствует запись в таблице b) 3) datea1
Это пример запроса:
SELECT * FROM tableA ta LEFT JOIN tableB tb on ta.id = tb.id_tablea WHERE ( if(tb.sold=1,tb.dateb2,( IFNULL(tb.dateb1,ta.datea1)) ) BETWEEN 'INT1' AND 'INT2' AND > ...
Моя проблема в том, что обе таблицы очень большие и запрос занимает очень много времени; как я могу оптимизировать этот запрос? Есть идеи?
заранее спасибо