Для сокращения количества запросов в базе данных с помощью логических операций можно предпринять следующие шаги:
- Привести предикаты к каноническому представлению. intuit.ru Это позволит искать общие арифметические выражения в разных предикатах запроса, вычислять константные выражения и избавляться от логических отрицаний. intuit.ru
- Привести к каноническому виду логическое выражение, задающее условие выборки запроса. intuit.ru Как правило, используются либо дизъюнктивная, либо конъюнктивная нормальные формы. intuit.ru При этом можно искать общие предикаты и упрощать логическое выражение, например, выявляя конъюнкцию взаимно противоречащих предикатов. intuit.ru
- Преобразовать запросы с изменением порядка реляционных операций. intuit.ru Например, для уменьшения числа соединяемых кортежей сначала произвести операции выборки на каждом отношении и только после этого перейти к операциям естественного соединения. intuit.ru
- Преобразовать запросы с вложенными подзапросами. intuit.ru Это сделает семантику подзапроса более явной, что позволит оптимизатору выбрать способ выполнения запроса, наиболее точно соответствующий семантике подзапроса. intuit.ru
- Использовать ограничения целостности при анализе запросов. intuit.ru Ограничения целостности связаны с условиями, которые накладываются на значения столбцов таблицы. intuit.ru При выполнении запросов над таблицами условия запросов объединяются специальным образом с условиями ограничений таблицы, и полученные обобщённые предикаты анализируются. intuit.ru
Для анализа плана выполнения запросов в большинстве баз данных SQL можно использовать оператор EXPLAIN. www.dev-notes.ru