Re[3]: Написание запроса с использованием LEFT JOIN
От: alico  
Дата: 05.12.06 11:36
Оценка:
Здравствуйте, _d_m_, Вы писали:

___>Здравствуйте, alico, Вы писали:


A>>
A>>SELECT a.id, a.type, a.type_id, a.some_specific_fields, 
A>>    a.text AS a_text
A>>    a.date AS a_date, 
A>>    g.text AS g_text, 
A>>    g.date AS g_date, 
A>>    n.text AS n_text, 
A>>    n.date AS n_date 
A>>FROM archive p 
A>>LEFT OUTER JOIN group_archive g ON (p.type_id = g.id AND p.type = 1)
A>>LEFT OUTER JOIN news_archive n ON (p.type_id = n.id AND p.type = 2)
A>>WHERE ISNULL(ISNULL(a.date, g.date), n.date) > 'December 01, 2006 00:00'
A>>ORDER BY p.id DESC
A>>


___>Ну вот здесь железно table-scan обеспечен


Во-первых задачи оптимизации не стояло. Может у него 200 записей на все таблицы — тогда овчинка оптимизации выделки не стоит.
Во-вторых можно отрезать заведомо неподходящие записи в условиях джойнов
В-третьих я бы копал структуру, а не запрос

ЗЫ. По моему имхо, Ваш вариант запроса тоже не избежит полного сканирования результата джойна
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.