Этот вопрос лучше всего задать на примере.
Рассмотрим таблицу вроде:
Main | P1 | P2
==============
1 | 1 | 1
2 | 1 | 3
3 | 1 | 1
4 | 2 | 3
...
Я хочу выполнить запрос, который возвращает все Main
значения, в которых значения P1
и P2
встречаются в списке кортежей.
Например, если бы у меня был список [(1,1), (2,3)]
, мне нужны были бы строки, где:
P1
- 1
и P2
равно 1
ИЛИ, где P1
равно 2
и P2
равно 3
.
Для приведенной выше таблицы это будет строки, где Main
равно 1
, 3
или 4
.
Я думаю, что могу добиться этого с помощью чего-то вроде:
SELECT Main
WHERE CONCAT(P1, P2) IN ("11", "13")
Но я подозреваю, что это выиграло ' Я не использую какие-либо индексы на P1
или P2
. Предполагая, что у меня много данных, есть ли лучший способ выполнить этот запрос, который будет использовать индексы?
EDIT
Впоследствии я нашел это вопрос , который тоже отвечает на мой вопрос (я использовал sqlalchemy)