В одном проекте вижу вручную написанный sql запрос в виде:
(field=1 or field=2)
Хотя, по идее можно было бы проще и понятнее написать:
field in (1,2)
В этом случае, на самом деле разворачивается в цепочку or, но при этом, если я верно помню, MySQL использует особый бинарный поиск. Кто нибудь может предположить зачем может быть использован вариант с OR?
(field=1 or field=2)
Здравствуйте, MasterMind, Вы писали:
MM>В одном проекте вижу вручную написанный sql запрос в виде:
MM>MM>(field=1 or field=2)
MM>
MM>Хотя, по идее можно было бы проще и понятнее написать:
MM>MM>field in (1,2)
MM>
MM>В этом случае, на самом деле разворачивается в цепочку or,
Ну, разворачивается оно там или нет -- дело 20-ое, главное -- это одно и то же.
логически эквивалентные конструкции.
MM> но при этом, если я верно помню, MySQL использует особый бинарный поиск.
Нет, никакого бинарного поиска не используется.
Может использоваться т.н. OR-strategy -- переписывание запроса в плане
как нескольких запросов с последующим UNION ALL.
select * from theTable
where field = 1
union all
select * from theTable
where field = 2
MM> Кто нибудь может предположить зачем может быть использован вариант с OR?
Оправдано это может быть только попыткой генерировать кросс-СУБД-шные запросы,
но я с трудом могу сейчас представить СУБД, которая не поддерживает IN.
А так -- безграмотность, идиотизм...