如何在我的 CREATE TABLE 语句中索引列?表格看起来像
command.CommandText =
"CREATE TABLE if not exists file_hash_list( " +
"id INTEGER PRIMARY KEY, " +
"hash BLOB NOT NULL, " +
"filesize INTEGER NOT NULL);";
command.ExecuteNonQuery();
我希望文件大小是索引并且希望它是 4 个字节
最佳答案
您不能完全按照您的要求进行操作,但与某些 RDBMS 不同,SQLite 能够在事务内部执行 DDL,并获得适当的结果。这意味着如果您真的担心没有索引的 file_hash_list,您可以这样做
BEGIN;
CREATE TABLE file_hash_list (
id INTEGER PRIMARY KEY,
hash BLOB NOT NULL,
filesize INTEGER NOT NULL
);
CREATE INDEX file_hash_list_filesize_idx ON file_hash_list (filesize);
COMMIT;
或使用您所拥有的任何数据库的事务原语的等效方法。
与仅在事务外执行这两个命令相比,我不确定这到底有多么必要。
正如其他人所指出的,SQLite 的索引都是 B 树;您无法选择类型是什么或列的哪一部分被索引;整个索引列都在索引中。它对于范围查询仍然很有效,只是占用的磁盘空间可能比您真正想要的多一点。
关于sqlite - 使用 SQLite 如何索引 CREATE TABLE 语句中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1676448/