Этот запрос отлично и не может оптимизироваться, на мой взгляд. Если вы хотите получить более быстрые результаты запроса, вам нужно будет посмотреть таблицу (таблицы) внутри представления, которое содержит поля даты.
Начните с применения фильтра только к этой таблице, пока не получите приемлемые результаты. Общие рекомендации состоят в том, чтобы убедиться, что два поля правильно проиндексированы и используются оптимизатором запросов.
После того, как вы удовлетворены этим представлением, посмотрите на представление. Если вам нужно улучшить производительность там, вы можете посмотреть на отдельные таблицы, которые будут объединены вместе с фильтрами, применяемыми к каждой из этих таблиц, если таковые имеются. Если все будет хорошо, пока вы не объедините представление, вы сможете оптимизировать представление несколькими способами в зависимости от вашей конкретной ситуации. Возможно, сохранение «моментального снимка» данных в ненормированном формате (возможно, хранилище данных) для устранения объединений, если вы создаете решение для отчетности. Мне также нравятся индексированные взгляды, когда ситуация правильная.
Оптимизировать * как *? – Jamiec
Какую ошибку вы получаете? –
Когда я использую или условие с SQL-сервером, требуется больше времени для выполнения. Я хочу использовать между предложением для двух полей, но с диапазоном дат это невозможно. '2016-06-20 16:41:00' BETWEEN dateTimeFieldFirst AND dateTimeFieldSecond с диапазоном дат –