Итак, я писал запрос в Visual Studio 2010 (я имею в виду, что открыл обозреватель сервера, щелкнул правой кнопкой мыши по серверу и выбрал Новый запрос). Запрос включает условие
A AND B AND C AND D AND E AND F AND (G OR H)
которая является конъюнктивной нормальной формой (CNF). Когда я запустил запрос (подключенный к MSSQL Server 2008), он изменил текст на
A AND B AND C AND D AND E AND F AND G OR
A AND B AND C AND D AND E AND F AND H
это дизъюнктивная нормальная форма (ДНФ).
Из того, что я нашел в Интернете, кажется, что DNF позволяет SQL запускать конъюнктивы отдельно и объединять их в конце.
Однако для чего-то подобного, с таким большим количеством повторяющихся условий, действительно ли DNF дает преимущество перед CNF? Если это не так, как я могу заставить оптимизатор принять условие как есть? Если да, должен ли я написать запрос в коде приложения в форме CNF, потому что он короче и аккуратнее, или в форме DNF, потому что это экономит время оптимизатора?