Я рассматриваю вопрос о том, должен ли я отформатировать таблицу в моей базе данных sqlite в «широком» или «длинном» формате. Примеры этих форматов приведены в конце вопроса.
Я ожидаю, что большинство моих запросов будет иметь вид:
SELECT * FROM table
WHERE
series in (series1, series100);
или аналог для выбора по столбцам в широком формате.
Я также ожидаю, что будет большое количество столбцов, даже достаточно, чтобы увеличить предел для столбцов .
Существуют ли общие рекомендации по выбору макета таблицы, который оптимизирует производительность запросов для такого рода случаев?
(Примеры каждого)
«Широкий» формат:
| date | series1 | series2 | ... | seriesN |
| ---------- | ------- | ------- | ---- | ------- |
| "1/1/1900" | 15 | 24 | 43 | 23 |
| "1/2/1900" | 15 | null | null | 23 |
| ... | 15 | null | null | 23 |
| "1/2/2019" | 12 | 12 | 4 | null |
«Длинный» формат:
| date | series | value |
| ---------- | ------- | ----- |
| "1/1/1900" | series1 | 15 |
| "1/2/1900" | series1 | 15 |
| ... | series1 | 43 |
| "1/2/2019" | series1 | 12 |
| "1/1/1900" | series2 | 15 |
| "1/2/1900" | series2 | 15 |
| ... | series2 | 43 |
| "1/2/2019" | series2 | 12 |
| ... | ... | ... |
| "1/1/1900" | seriesN | 15 |
| "1/2/1900" | seriesN | 15 |
| ... | seriesN | 43 |
| "1/2/2019" | seriesN | 12 |