2010-10-29 63 views
0

晚安,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

回答

0

參數化查詢不會比手動編碼sql更快。他們使用的原因是他們提供許多與使用存儲過程相同的安全優勢。不要將字符串添加到一起以使用文本框輸入進行sql ...其他開發人員會認爲您的大腦速度很慢。

你怎麼樣在所有要淨化你的字符串輸入,然後看它是否仍然運行速度更快所需的代碼添加=)

0

編譯查詢(這是參數化)肯定是更快,因爲他們只需要解析一次。因此,如果您多次執行相同的語句,但使用不同的值,那麼速度會更快。