Три вопроса:
1) Насколько сложны запросы? Генерация индексов и временных таблиц предполагает, что сервер должен генерировать эти вещи из-за сложных операций с неиндексированными столбцами. Насколько вероятно это? Судя по тому, что вы сообщаете, вероятный ответ «сложен»
2) Насколько велики наборы возврата? Конечный результат - 100 строк или 1 миллион? Из того, что вы сообщаете, ответ может быть любым. Я подозреваю, что этот вопрос не так важен, но важно хотя бы знать.
3) Повторяя вопрос 1 по-другому, даже если возвращаемые наборы малы, есть ли огромные промежуточные результаты, которые необходимо скомпилировать на пути к маленькому результату? Снова, я подозреваю, что ответ здесь - большие сложные промежуточные результаты.
Это предполагает, что по крайней мере некоторые вещи должны быть проиндексированы, и, возможно, данные должны быть структурированы так, чтобы они были ближе к тому, что вы пытаетесь запросить.
Последний вопрос: это распространенная проблема для большинства ваших наиболее важных запросов или только для одного или двух?
РЕДАКТИРОВАТЬ В ОТВЕТ НА КОММЕНТАРИЙ: Я выполняю запросы к хранилищу данных весь день, и некоторые из них занимают около 10 минут. Некоторым требуются часы, и я отталкиваю их в фоновую работу и разбиваю на этапы, чтобы не затопить все. Такова природа обработки очень больших наборов данных.
Мои вопросы в первоначальном ответе направлены на выяснение того, завершатся ли ваши проблемные запросы когда-либо . Можно невольно написать запрос, который выдает столько промежуточных данных, что вы можете уйти, вернуться через 2 дня, и он все еще выполняется. Поэтому я хотел бы повторить три моих первоначальных вопроса, фактически они являются единственным способом полностью ответить на ваш вопрос.
Резюме: Да, некоторые запросы занимают гораздо больше времени, это природа зверя. Лучшее, на что вы можете надеяться, - это производительность, линейно зависящая от объема считываемых данных, и если обрабатывается 100 миллионов строк, это займет минуты, а не секунды. Но что еще более важно, если запрос выполняется за 4 секунды на 1 млн строк, а на 100 млн строк занимает >> 400 секунд (например, час), то те оригинальные вопросы, которые я задал, помогут вам выяснить, почему, с целью оптимизации эти запросы.