MH>Почему для A or null не используется поиск индексу? Ведь результаты для 1 и 2-го варианта одинаковы, я не вижу смысла использовать менее эффектиный план для 1-го варианта. MH>Это sqlite не додумывается? хотя верится с трудом тк вроде случай тривиальный и элеменировать несущественную константу не трудно.. MH>Скорее всего есть какой-то нюанс который мне непонятен, но какой? MH>Как в других базах, такая же фигня?
10 лет назад (сейчас я не в курсе) — OR в предикатах мешал использовать индекс в Oracle.
Оптимизатор oracle делал "OR Expansion transformation" — преобразовывал при выполнении запрос таким образом для использования индекса:
SELECT ... WHERE f1=1
UNION
SELECT ... WHERE null
Возможно в твоём случае оптимизатор не вычисляет "or null" на стадии оптимизации, а просто не использует индекс потому что "or", или потому что для "or null" явно не нужен индекс для работы.