Разделить большую таблицу sqlite по сессионному полю
Я относительно новичок в sql(ите), и я учусь по ходу работы над новым проектом. У нас есть миллионы строк транзакций в одной таблице "data", одно из которых - поле "sessionid".
Поскольку сейчас я хочу сконцентрироваться на сессионной активности, мне прежде всего нужно смотреть только на транзакции из тех же сессий.
Теперь моя интуиция заключается в том, что было бы намного быстрее, если бы я разделил базу данных по сеансам на множество отдельных сессионных таблиц, чем всегда запрашивал один сеанс, а затем продолжал. Мой вопрос: это правильно? будет ли это иметь значение?
Даже если нет: не могли бы вы помочь мне и сказать мне, как я мог бы разделить строки одной таблицы "данных" на множество таблиц, относящихся к сеансу, при этом строки остались прежними? Плюс одна таблица, которая связывает sessionIds с их таблицами?
Спасибо!
Мой друг только что сказал мне, что разделение на таблицы было бы крайне негибким, и я должен попытаться вместо этого добавить отдельный индекс для разных строк sessionId, чтобы быстрее получить доступ к отдельным сеансам. Есть мысли по этому поводу и как это сделать лучше всего?
1 ответ
Прежде всего, есть ли у вас какие-то конкретные проблемы с производительностью до сих пор? Если да, пожалуйста, опишите это.
Наличие одной таблицы на сеанс, вероятно, ускорит поиск / индексы (для INSERT
с) дела обстоят.
SQLite не накладывает ограничения на количество таблиц, так что все должно быть в порядке.
Еще одно решение, обеспечивающее более простое обслуживание, заключается в создании одной таблицы в день / неделю.
В зависимости от продолжительности ваших сессий, это может быть осуществимо или нет.