SQLite的参数化查询运行缓慢

问题描述:

晚安,SQLite的参数化查询运行缓慢

我有我需要从SQLite数据库选择用两个字符串查询数据库得到的值的方法。这些字符串被传递给方法,并在方法内部进行一些字符串连接以构建SQLiteCommand.CommandText。令我惊讶的是,即使使用字符串连接,并且尽管每个人都说参数化查询比使用字符串连接更快,但当我在方法外参数化此查询并仅将值分配给方法本身中的参数时,它运行速度会更慢3ms相比7/8ms)...我做错了什么或这是正常的?

外我有以下代码的方法:

ComandoBD = new SQLiteCommand(@"SELECT Something FROM SomeTable WHERE (Field1 = @TextField1 AND Field2 = @TextField2)", LigacaoBD);

里面的方法,我只是写

ComandoBD.AddWithValue("@TextField1", StringWithValue1); ComandoBD.AddWithValue("@TextField2", StringWithValue2);

奇怪的是,这个运行速度更快: ComandoBD.CommandText = "SELECT Something FROM SomeTable WHERE (Field1 = '" + StringWithValue1 + "' AND TextField2 = '" + StringWithValue2 + "')";

非常感谢你。

+1

没有看到代码就不可能知道您是否做错了什么。 – mikerobi 2010-10-29 22:07:03

+1

发布您的代码。 – Rory 2010-10-29 22:07:49

+0

非常感谢。我已经发布了它。 – Miguel 2010-10-29 22:16:55

参数化查询不会比手动编码sql更快。他们使用的原因是他们提供许多与使用存储过程相同的安全优势。不要将字符串添加到一起以使用文本框输入进行sql ...其他开发人员会认为您的大脑速度很慢。

你怎么样在所有要净化你的字符串输入,然后看它是否仍然运行速度更快所需的代码添加=)

编译查询(这是参数化)肯定是更快,因为他们只需要解析一次。因此,如果您多次执行相同的语句,但使用不同的值,那么速度会更快。