创建索引时的SQLite索引性能

时间:2014-11-28 20:06:14

标签: android sqlite android-sqlite

我有一个以这样的方式创建的SQLite表:

  CREATE TABLE ex2(_ID INTEGER PRIMARY KEY AUTOINCREMENT,x REAL,y REAL,z TEXT);

我对此表的查询始终是:

SELECT z FROM ex2 WHERE x BETWEEN 1.5 AND 100.5 AND y BETWEEN 10.2 AND 65.3;

我的查询要求满足x和y列值(REAL数据类型)的范围约束的结果。另外,澄清一下,1.5,100.5,10.2和65.3并未修复。只是为了说明一个示例查询。

x和y列值肯定不会是唯一的。

创建索引的最佳方法是什么?我的选择(到目前为止测试):

选项1:

  CREATE INDEX ex2i1 ON ex2(x);
  CREATE INDEX ex2i2 ON ex2(y);

选项2:

  CREATE INDEX ex2i12 ON ex2(x,y);

我已经在我的Android测试设备上完成了一些(原始)性能测试,我似乎无法找到哪个索引实际上更好的具体证据。

1 个答案:

答案 0 :(得分:0)

选项2(即综合指数)一般应该更好。我认为this是一篇关于这个主题的好文章。

更新
Here也很好

附:顺便说一句,要看到差异你必须用随机值创建真正的大表(我会说不少于10 000条记录)并选择几个x和y的范围