SQL запрос, чтобы получить перекрывающиеся записи между двумя большими списками диапазонов - PullRequest
0 голосов
/ 28 января 2020

У меня есть база данных SQLite A с нумерацией c столбцов для start и stop, которая довольно велика (1M строк). И у меня есть второй список чисел c диапазонов B beginning и end, который является средним (10K строк).

Я хотел бы найти набор записей в A, которые перекрываются с диапазонами в B.

Я мог бы сделать это с помощью скрипта python, который просматривает список B и выполняет запросы к базе данных 10K , но мне интересно, есть ли более SQLi sh способ сделать это. Список B потенциально может быть добавлен в базу данных как индексированный TEMP TABLE, если это помогает процессу.

Возможное упрощение, хотя и не оптимальное, заключается в том, что список A можно рассматривать как одно местоположение, position, что позволяет нам нужно искать только A.position, которые попадают внутрь B.beginning и B.end.

1 Ответ

1 голос
/ 28 января 2020

Вы можете легко express это в SQL как объединение. Для частичных совпадений это будет:

select a.*, b.*
from a join
     b
     on a.start < b.end and a.end > b.start;

Однако это будет медленно, потому что будет выполняться вложенное сравнение l oop. Так что, хотя и лаконично, это не обязательно будет намного быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...