Оператор ИЛИ обычно выбрасывает индексирование в окно.
Представьте, что у вас есть таблица с индексированным столбцом идентификаторов, который считает один раз на строку.В этой таблице у вас есть 100 строк.Строка 1 будет иметь значение 1 в этом столбце, а строка 100 будет иметь значение 100.
Теперь выполните этот запрос: SELECT * FROM таблицы WHERE столбец> = 45
Этот запрос имеет определенную начальную точку: 45
Таким образом, первая запись, которую он проверит, имеет правильный удар в середине вашей таблицы, значение столбца которой равно 50. Это слишком высоко для 45, ноон исключил половину таблицы, на которую не нужно смотреть.Затем он посмотрит на запись в середине этой группы, значение которой равно 25. Это слишком мало, но опять-таки он устранил половину результатов.
Короче говоря, чтобы найти первое45, он должен смотреть только на 6-7 строк.Затем он возвращает каждую строку оттуда до конца таблицы в качестве набора результатов.
Теперь давайте настроим этот запрос следующим образом: SELECT * FROM таблицы WHERE column> = 45 OR column = 43
У нас больше нет определенной начальной точки.База данных не может определить одну конкретную строку для запуска ваших результатов.Чтобы определить, какие записи возвращать, необходимо проверить каждую строку , чтобы убедиться, что она соответствует вашим требованиям.Если он совпадает, он добавляет эту строку к своим результатам и переходит к следующей.