如何更快地进行此查询?

时间:2013-03-17 16:45:43

标签: sql performance sqlite unityscript

我的Db看起来像这样:

id | Column1 | Column2

必须知道的事实:id不是主要的唯一ID(但可能是)。 id最高可达2百万+。列值用TINYINT

填充
var query : String = "SELECT Column1 FROM Table1 WHERE Column1 <> 0";   
dbcmd = dbcon.CreateCommand();
dbcmd.CommandText = query; 
reader = dbcmd.ExecuteReader();
var result : int = 0;
while(reader.Read()) { 
    result++;
}
return result; 

但是对于一个基本的搜索它最多需要5秒,反正是为了让它更快?

编辑:像往常一样,感谢贡献者和快速!

3 个答案:

答案 0 :(得分:7)

是的,您正在阅读结果并逐一处理。你似乎正在做的就是计数,你可以得到:

"SELECT COUNT(*) FROM Table1 WHERE Column1 <> 0"; 

答案 1 :(得分:2)

这看起来不像javascript代码,但您可以尝试计算记录而不是执行查询,然后循环遍历客户端上的整个结果集并增加变量:

var query : String = "SELECT Count(Column1) FROM Table1 WHERE Column1 <> 0";

这将比你的代码快得多,因为count操作将由数据库服务器直接完成。

答案 2 :(得分:0)

是,索引Column1上的表,即where子句中使用的行。