Dmitry67 wrote:По поводу когда цикл быстрее пиведите пример PLS
Что касается архаичности, то конечно SQL в наше объектно ориентированное время странен, однако есть ОЧЕНЬ серьезные причны для этого
В частности они привели к краху всех ОО баз
Но это уже обсуждалось
Когда, к примеру, надо прервать выполнение по каким-то соображениям.
К примеру, у вас есть много адресов, по которым надо отправить почту.
Или есть данные, которые надо расшифровать.
При ошибке это дело надо прекратить немедленно. Если я буду это делать в цикле, то существует ненулевая вероятность, что мне не придется обрабатывать поток записей до конца, в противном случае я а) теряю время на передачу данных б) Сервер отрабатывает весь запрос независимо
Ну и еще можно придумать. Собственно, мне кажется что либо я не совсем точно выразился, либо вы перечитали книжек по объектным базам.
Мне не кажется SQL архаикой. Он, кстати, должен остаться, я только за.
Мне кажется T/SQL архаикой. А вот он должен уйти. Из того, что я видел, разработчики объектных баз пытались выкинуть SQL, а этого делать не надо.
Запросы должны быть.
То есть, select * from Foo должен возвращать массив объектов foo (soap), и это уже практически есть.
where foo.id='bar' тоже должно работать, но id это не поле, а свойство объекта.
Серверу вполне по силам рядовой случай, когда это свойство просто хранилище безо всякой логики отработать его с той же скорость, с какой он сейчас отрабатывает поля.
update foo set foo.FooBar = 'FooBar' аналогично.
Разница в том, что при создании класса можно написать
class Foo{
string FooBar {
set{ if value == 'BadValue' throw new Exception()}
get{;}
}
}
И это отработает при присваивании. Часть логики для облегчения сервера (типа уникальных полей) можно сделать через аттрибуты, и тогда оно будет работать аналогично нынешним по скорости.
Короче, можно много чего сделать.