Могу ли я предложить размещение запрос в пределах вашего соединения слева в представлении базы данных - таким образом, код может быть гораздо более чище и проще в обслуживании.
Кроме того, проверьте столбцы, которые вы часто используете больше всего. Это может быть кандидат на индексирование, чтобы при выполнении запроса он мог быть быстрее.
Вы также можете проверить свои типы данных столбцов ... Я вижу, что у вас есть этот тип кода:
(CASE КОГДА b.tray_type IS NULL THEN 1 ELSE 0 END) flag2
Если у вас есть шанс изменить дизайн для таблиц (iebTray_Type биты, или использовать вычисляемый столбец для определения флага) он будет работать быстрее, потому что вы не должны использовать операторы Case для определить флаг. Вы можете просто добавить его в качестве другого столбца для вашего запроса.
Надеюсь, это поможет! :)
Ann
Почему вы используете 'SUM()'? 'SUM (1 | 0)' может быть записано без 'SUM()';) – knittl
16 вопросов, и вы не дадите ответы? Нет, спасибо ... –
Если вы используете правое соединение, вы не заслуживаете ответа ... просто шутите –