Чтобы определить, какой запрос будет теоретически быстрее / медленнее, вы можете посмотреть, как работает индекс базы данных: это, по сути, построение дерева сначала из значений из столбца, а затем со значениями из столбца b
Некоторые примечания:
Поиск точного значения быстрее и поиск диапазона (например,> 0) только потому, что вам нужно сканировать меньше данных.
Это означает, что запрос будет выполняться быстрее для условий, где обе переменные по сравнению с const:
- Выберите * у пользователя, где a = 0 И b = 0
Второй тип запроса: первый столбец в индексе имеет сравнение с константой, а второй - диапазон, так как вы снова уменьшаете количество сканирований (вам не нужно сканировать Bs для A! = 0):
Выберите * от пользователя, где a = 0 И b> 0
Следующий запрос частично сканирует диапазон A (поэтому он медленнее 1/2), но может довольно быстро соответствовать b:
Выберите * от пользователя, где a> 0 И b = 0
Последний - это то, где у вас есть ИЛИ, в основном вы делаете 2 отдельных сканирования, а затем объединяете результаты (или просто выполняете полное сканирование):
Выберите * от пользователя, где a = 0 ИЛИ b = 0