Выполнение OdbcCommand (ExecuteScalar / ExecuteReader / ExecuteNonQuery) все работает медленно - PullRequest
0 голосов
/ 03 октября 2018

В моем коде я выполняю 2 вида запросов, которые выполняю на Azure SQL Server через драйвер ODBC.Кажется, они выполняются очень медленно, независимо от того, что я делаю:

УДАЛИТЬ ИЗ [tableName] WHERE ID = id

INSERT INTO [tableName] (?, ...,?)OUTPUT Inserted.PK VALUES (val_0, ..., val_N)

Выполнение обоих запросов занимает 0,22-0,24 секунды, что приводит к очень низкой пропускной способности моей программы.

Запросынаходятся внутри одного и того же оператора using для повторного использования соединения:

using (OdbcConnection conn = new OdbcConnection(connectionString))
{
    conn.Open();
    ... //commands here
}

Я пытался выполнить их следующими способами, все они занимали примерно одинаковое время (0,22-0,24 с) независимо от запроса или метода:

using (OdbcCommand cmd = new OdbcCommand([SqlCommand], conn))
    cmd.ExecuteNonQuery();

.

using (OdbcCommand com = new OdbcCommand([SqlCommand], conn))
using (OdbcDataReader reader = com.ExecuteReader())
{
    while (reader.Read())
    {
        primaryKey = reader.GetString(0);
    }
}

.

using (OdbcCommand com = new OdbcCommand([SqlCommand], conn))
    primaryKey = (long) com.ExecuteScalar();

ВОПРОС Как мне написать запросы, чтобы они выполнялись так быстро, как я ожидалих к? **

...