Разделить большую таблицу sqlite по сессионному полю

Я относительно новичок в sql(ите), и я учусь по ходу работы над новым проектом. У нас есть миллионы строк транзакций в одной таблице "data", одно из которых - поле "sessionid".

Поскольку сейчас я хочу сконцентрироваться на сессионной активности, мне прежде всего нужно смотреть только на транзакции из тех же сессий.

Теперь моя интуиция заключается в том, что было бы намного быстрее, если бы я разделил базу данных по сеансам на множество отдельных сессионных таблиц, чем всегда запрашивал один сеанс, а затем продолжал. Мой вопрос: это правильно? будет ли это иметь значение?

Даже если нет: не могли бы вы помочь мне и сказать мне, как я мог бы разделить строки одной таблицы "данных" на множество таблиц, относящихся к сеансу, при этом строки остались прежними? Плюс одна таблица, которая связывает sessionIds с их таблицами?

Спасибо!


Мой друг только что сказал мне, что разделение на таблицы было бы крайне негибким, и я должен попытаться вместо этого добавить отдельный индекс для разных строк sessionId, чтобы быстрее получить доступ к отдельным сеансам. Есть мысли по этому поводу и как это сделать лучше всего?

1 ответ

Прежде всего, есть ли у вас какие-то конкретные проблемы с производительностью до сих пор? Если да, пожалуйста, опишите это.

Наличие одной таблицы на сеанс, вероятно, ускорит поиск / индексы (для INSERTс) дела обстоят.

SQLite не накладывает ограничения на количество таблиц, так что все должно быть в порядке.

Еще одно решение, обеспечивающее более простое обслуживание, заключается в создании одной таблицы в день / неделю.

В зависимости от продолжительности ваших сессий, это может быть осуществимо или нет.

Связанный: /questions/23525987/kakovyi-harakteristiki-proizvoditelnosti-sqlite-s-ochen-bolshimi-fajlami-bazyi-dannyih/23526004#23526004

Другие вопросы по тегам