Sql 如何使此查询更快?

Sql 如何使此查询更快?,sql,performance,sqlite,unityscript,Sql,Performance,Sqlite,Unityscript,我的数据库如下所示: id | Column1 | Column2 必须知道的事实:id不是主要唯一id(但可以是)。id最多可以达到200万+。列值用TINYINT填充 var query : String = "SELECT Column1 FROM Table1 WHERE Column1 <> 0"; dbcmd = dbcon.CreateCommand(); dbcmd.CommandText = query; reader = dbcmd.ExecuteRea

我的数据库如下所示:

id | Column1 | Column2
必须知道的事实:id不是主要唯一id(但可以是)。id最多可以达到200万+。列值用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; 
var query:String=“从表1中选择Column1,其中Column1为0”;
dbcmd=dbcon.CreateCommand();
dbcmd.CommandText=查询;
reader=dbcmd.ExecuteReader();
var结果:int=0;
而(reader.Read()){
结果++;
}
返回结果;
但是对于一个基本的搜索来说,它只需要5秒钟,有没有其他方法可以让它更快呢


编辑:像往常一样,感谢您的贡献者和速度

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

var query : String = "SELECT Count(Column1) FROM Table1 WHERE Column1 <> 0";
var query:String=“从表1中选择Count(Column1),其中Column1为0”;

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

是的,您正在读取结果并逐个处理它们。您似乎需要做的只是计数,您可以通过以下方式获得:

"SELECT COUNT(*) FROM Table1 WHERE Column1 <> 0"; 
“从表1中选择计数(*),其中列1为0”;

是的,在where子句中使用的第1列索引表。

你确定这是JavaScript而不是ActionScript或TypeScript吗?它是UnityScript,非常类似于JavaScript(),我将它重新标记为UnityScript,而UnityScript和JavaScript非常相似,它们实际上是不同的语言Hanks!还有其他建议吗?谢谢!还有其他建议吗?没有,这是你希望从这次手术中得到的最好的表现。
COUNT
SQL函数正是为了这个目的而设计的:计算符合数据库中某些条件的记录数。任何其他的解决方案都是完全浪费资源。太好了,我会试试看!专栏1是独一无二的吗?是否已经为表定义了主索引?
在表1(列1)上创建唯一的索引col1\u index\u名称
更改表1添加索引(第1列)我将对它进行一些搜索。谢谢你的建议!