В Asp.net C # я использую следующий код для выбора из базы данных MySql:
string userid = "12";
MySqlCommand mysqlcmd = new MySqlCommand("SELECT productid FROM table WHERE userid=?userid", mysqlconn);
mysqlcmd.Parameters.AddWithValue("?userid", userid);
mysqlcmd.Connection.Open();
mysqlcmd.ExecuteReader();
...
В таблице идентификатор пользователя имеет тип int. Если у меня есть индекс в таблице идентификаторов пользователей, что произойдет с этим запросом, сможет ли он правильно использовать индекс, даже если идентификатор пользователя, который я добавляю к параметру, является строкой, а индекс в таблице - int?
Даст ли я лучшую производительность перед добавлением идентификатора пользователя в параметр, преобразует идентификатор пользователя в целое число типа этого:
int userid_int = Int32.Parse(userid);
MySqlParameter param = new MySqlParameter("?userid", MySqlDbType.Int32);
param.Value = userid_int;
cmd.Parameters.Add(param);
Или можно использовать только:
mysqlcmd.Parameters.AddWithValue("?userid", userid);