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列)代码>我将对它进行一些搜索。谢谢你的建议!