поэтому оба условия WHERE требуют сканирования таблицы. Это объясняет, почему мой тест был быстрым, даже когда дорогостоящее условие было указано первым в предложении WHERE. (Без доступных индексов оптимизатор запросов SQLite, по-видимому, считает оба условия одинаково дорогостоящими, поэтому он не беспокоится о порядке, в котором они оцениваются.)

ах данных SQL (я использую Python + Sqlite), как убедиться, что, если у нас есть 1 миллион строк, запрос

SELECT * FROM mytable WHERE myfunction(description) < 500 AND column2 < 1000
                           [-----------------------------]   [--------------]
                               high-CPU cost condition         easy-to-test 
                              requiring 100 µs per test         condition

оптимизирован так, что 1-е условие (процессор дорого)только проверено если легко проверить второе условие уже верно? (так как это логичноANDленивыйAND?)

Пример:

если всегда проверяется 1-е условие, это потребует 1 миллион x 100 мкс = 100 секунд!

если сначала проверяется 2-е условие, то только 5000 элементов будут предварительно отфильтрованы (в моем случае использования), а затем применение 1-го условия будет очень быстрым.

Примечание:

column2 не нужен идентификатор, это может быть что-то еще

в моем случае использования,myfunction включает в себя вычисление расстояния Левенштейна

Ответы на вопрос(3)

Ваш ответ на вопрос