Можно ли создать временный индекс в sqlite? - PullRequest
3 голосов
/ 04 ноября 2011

Программа, над которой я работаю, может импортировать данные из другой программы (не нашей), которая использует файлы sqlite.Мне нужны индексы, которых еще нет в файлах sqlite, но я не хочу изменять чьи-то данные, чтобы позволить им импортировать их.Индекс используется многими запросами.Таким образом, я хотел бы создать временный индекс, который будет существовать только до тех пор, пока соединение

Я видел следующий очевидный синтаксис, на который ссылаются (в сообщениях списка рассылки от 2003 ...):

$ sqlite3 thirdparty.sqlite
SQLite version 3.7.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> CREATE TEMP INDEX foo ON SomeTable(SomeCol);
Error: near "INDEX": syntax error

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

1 Ответ

3 голосов
/ 04 апреля 2013

ВРЕМЕННЫЕ индексы были временно добавлены, но вскоре удалены, потому что согласованность не может быть гарантирована. Хотя это не должно быть проблемой, если индекс длится только для транзакции (что приведет к исключительной блокировке и, следовательно, предотвратит изменение), это не так, как они были реализованы. Таким образом, на момент написания статьи временные индексы недоступны для sqlite. Подробнее см. http://permalink.gmane.org/gmane.comp.db.sqlite.general/4827.

...