SQLite: запросы к секционированным таблицам - PullRequest
0 голосов
/ 08 июня 2018

У меня есть 100 таблиц с> 1M записей в каждой.Все таблицы различаются по именам, но имеют одинаковую структуру:

 (valueX INT NOT NULL, valueY INT NOY NULL, valueZ INT NOT NULL).

Все имена таблиц перечислены в отдельной таблице NAMES(name TEXT NOT NULL), но из-за ограничений SQLite имя таблицы не может быть подставлено в запросе как переменная.

Я хочу искать во всех строках таблиц, где valueX > valueZ AND valueZ < valueY, пропуская при этом первые N и извлекая следующие строки K.

Я предпочитаю не тратить место на диске и / или память, поскольку я считаю, что ониможет быть недостаточно.Это эффективно исключает опцию UNION .

Что можно сделать - учитывая ограничения?

PS.«Что можно сделать» я выражаю свое желание узнать о правильной стратегии и увидеть образец соответствующего запроса.

PPS.Количество столов может измениться в любое время.

1 Ответ

0 голосов
/ 09 июня 2018

SQLite будет делать сглаживание подзапроса , если это возможно, поэтому не нужно штрафовать диск / память за простое объединение таблиц с UNION ALL (предпочтительно в виде) и выполнение запроса по этому.

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