Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, Sinclair, Вы писали:
_>>>При исполнение предкомпилированного запроса вообще не используется sql код. Ни для компиляции, ни для вычисления хеша и поиска в кеше. Соответственно при исполнение запроса он не готовится на клиенте (в смысле клиенте СУБД) и не передаётся на сервер (СУБД).
S>>Ух ты! И как это работает? Что же передаётся на сервер?
S>>Я, наверное, сорву какие-то покровы, но на сервер при исполнении prepared statement уезжает вполне себе SQL.
S>>Выглядит он примерно так:
S>>S>>exec sp_execute 10003, N'Hello, world!', 222
S>>
S>>Его парсит парсер — точно так же, как и любой другой запрос. И точно так же первым делом вычисляется хеш, и происходит поиск в кеше планов.
_>1. Не стоит мерить все РСУБД по одному SQL Server. Я уже заметил что это почему-то характерная особенность любителей linq (тут некоторые даже путали стандарт sql из-за этого), но всё же надо помнить что популярных РСУБД много и работают они весьма по разному...
Ну, расскажите мне, какая из "многих популярных СУБД" выполняет prepared statements без помощи SQL.
_>2. Я думаю всем очевидно, что в моей фразе говорилось об sql коде запроса (select... ), так что даже в случае SQL Server она является полностью верной. Если конечно не пытаться специально цепляться к формулировкам на пустом месте, за отсутствием каких-либо реальных контраргументов.
Я думаю, что всем очевидно ваше непонимание принципов работы РСУБД, и желание выиграть спор любой ценой, меняя задним числом смысл ваших утверждений. Напомню: вы утверждали, что серверу не надо парсить SQL запрос. Увы, парсинг всё ещё нужен. Если вы захотите рассказать, что парсинг полукилобайта текста вместо килобайта сильно спасёт производительность, то лучше не надо — ваши смешные представления про то, как оптимизируются программы, мне уже известны.