Можно также протестировать с , Преобразовывают. IsDBNull (MSDN) .
Относительная стоимость плана выполнения не всегда является надежным индикатором производительности.
Я предполагаю из вашего sql, что должна быть возвращена только 1 строка. При условии, что UserId является уникальным ключом для User, тогда производительность ваших двух подходов будет аналогичной для большинства реляционных баз данных.
Следует иметь в виду следующее:
std :: vector vecSomething
, вы не можете поместить vecSomething [0]
в окно просмотра, потому что std :: vector :: operator []
- перегруженный оператор. Следовательно, для вектора объектов нельзя сделать vecObject [0] .SomeMemberVariableOfObject
в окне наблюдения. Вы можете написать vecObject._Myfirst [0] .SomeMemberVariableOfObject
. В реализации STL в Visual Studio _Myfirst
является членом вектора, указывающим на первый элемент.
Если вы добавляете свои собственные переменные и типы в окно наблюдения, добавляйте наблюдения непосредственно к элементам данных. Проследить цепочки указателей вроде member.memberStruct.ptrToObj-> memberOfObj
.
Таким образом, немного загадочно, почему перегруженные операторы нельзя использовать.
Почему это происходит?
Инструмент имеет свои ограничения. Например, много раз я «перехожу к определению», а определение не находит. Приходится «искать в файлах». Неудивительно, что некоторые выражения также не вычисляются во время сеансов отладки.
Как это исправить?