Параметризованный SQLite-запрос выполняется медленно - PullRequest
0 голосов
/ 30 октября 2010

Спокойной ночи,

У меня есть метод, в котором мне нужно выбрать из базы данных SQLite значение, полученное путем запроса базы данных с двумя строками.Строки передаются методу, и внутри метода я делаю конкатенацию строк для сборки SQLiteCommand.CommandText.Что меня удивляет, так это то, что даже при конкатенации строк и несмотря на то, что все говорят, что параметризованные запросы выполняются быстрее, чем конкатенация строк, когда я параметризирую этот запрос вне метода и назначаю значения только параметрам в самом методе, он выполняется намного медленнее (3 мс по сравнению с 7/8 мс) ... Я что-то не так делаю или это нормально?

Вне метода у меня есть следующий код:

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 + "')";

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 30 октября 2010

скомпилированные запросы (которые параметризованы) определенно быстрее, так как их нужно анализировать только один раз.Так что если вы выполняете один и тот же оператор много раз, но с разными значениями, то это будет быстрее

0 голосов
/ 30 октября 2010

Параметризованные запросы не быстрее, чем ручное кодирование sql. Причина, по которой они используются, заключается в том, что они предлагают те же преимущества безопасности, что и хранимые процедуры. Не добавляйте строки вместе, чтобы создать sql с вводом в текстовое поле ... другие разработчики подумают, что вы работаете медленно.

Как насчет того, чтобы добавить весь код, необходимый для очистки вашего строкового ввода, а затем посмотреть, работает ли он еще быстрее =)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...