3

私が取り組んでいるプログラムは、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

このようなことは可能ですか?現在、インポート前にファイルのコピーを作成しているだけですが、これらのファイルは非常に大きくなる可能性があるため、かなり実用的ではありません。

4

1 に答える 1

3

TEMPORARY インデックスは一時的に追加されましたが、一貫性が保証されなかったため、すぐに削除されました。インデックスがトランザクションの間だけ存続する場合 (排他ロックが発生して変更が妨げられる場合)、これは問題にはなりませんが、これは実装された方法ではありません。そのため、これを書いている時点では一時インデックスは sqlite では利用できません。詳細については、http://permalink.gmane.org/gmane.comp.db.sqlite.general/4827を参照してください。

于 2013-04-04T10:45:32.717 に答える