我正在处理的程序可以从使用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
有可能做这样的事吗?现在,我们只是在导入之前复制文件,但是这些文件可能非常大,所以这是不切实际的。
答案 0 :(得分:3)
TEMPORARY指数暂时加入但很快就被删除,因为无法保证一致性。虽然如果索引仅持续一个事务(这会导致独占锁并因此阻止修改),这应该不是问题,但这不是它们的实现方式。因此,在撰写本文时,临时索引不适用于sqlite。有关详细信息,请参阅http://permalink.gmane.org/gmane.comp.db.sqlite.general/4827。