2009-09-10 3 views
0

Следующий запрос работает должным образом. Но я думаю, что есть достаточно места для оптимизации. Любая помощь?Оптимизировать правые соединения

SELECT a.cond_providentid, 
     b.flag1 
FROM  c_master a 
WHERE a.cond_status = 'OnService' 
ORDER BY a.cond_providentid, 
     a.rto_number; 
+0

Почему вы используете 'SUM()'? 'SUM (1 | 0)' может быть записано без 'SUM()';) – knittl

+2

16 вопросов, и вы не дадите ответы? Нет, спасибо ... –

+0

Если вы используете правое соединение, вы не заслуживаете ответа ... просто шутите –

ответ

2

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

Кроме того, проверьте столбцы, которые вы часто используете больше всего. Это может быть кандидат на индексирование, чтобы при выполнении запроса он мог быть быстрее.

Вы также можете проверить свои типы данных столбцов ... Я вижу, что у вас есть этот тип кода:

(CASE КОГДА b.tray_type IS NULL THEN 1 ELSE 0 END) flag2

Если у вас есть шанс изменить дизайн для таблиц (iebTray_Type биты, или использовать вычисляемый столбец для определения флага) он будет работать быстрее, потому что вы не должны использовать операторы Case для определить флаг. Вы можете просто добавить его в качестве другого столбца для вашего запроса.

Надеюсь, это поможет! :)

Ann

+0

+1 для ваших усилий – Natrium

Смежные вопросы