当前位置:  开发笔记 > 前端 > 正文

使用SQLite如何索引CREATE TABLE语句中的列?

如何解决《使用SQLite如何索引CREATETABLE语句中的列?》经验,为你挑选了2个好方法。

如何在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();

我希望filesize是索引,并希望它是4个字节



1> hobbs..:

你无法准确地完成你所要求的,但与一些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树; 你无法选择类型是什么或列的哪个部分被索引; 整个索引列都在索引中.它对于范围查询仍然有效,它可能会占用比你真正喜欢的更多的磁盘空间.


我只想注意,从版本3.8.0开始,有部分索引,它允许您仅使用WHERE语句索引部分列:http://www.sqlite.org/partialindex.html

2> Björn..:

我认为你不能.你为什么不能使用第二个查询?在SQLite中指定索引的大小似乎是不可能的.但话说回来,它是SQ_Lite_;)

create index
    myIndex
on
    myTable (myColumn)

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有