-
> Курсоры в TSQL медленные.
Это как ? Ты хочешь сказать, что сформировать result set быстрее, чем двигаться по нему ?
То есть,
SELECT foo FROM bar
будет быстрее, чем
CURSOR foobar IS SELECT foo FROM bar;
OPEN foobar;
FETCH foobar INTO foobardata;
...
?
-
> Ты хочешь сказать, что сформировать result set быстрее, чем двигаться по нему ?
смотря для чего, если выбрать одну запись где то ближе к началу то курсором быстрее (если есть индекс то может и нет), если цель в обработке всех то вариант пакетной команды очевидно будет быстрее чем перебор и обработка тех же самых записей по одной в курсоре.
и это, имхо, от языка не зависит. даже в чудесном оракле должно быть тоже самое.
-
sniknik © (20.05.09 16:10) [61]
В чудесном оракле для получения result set можно указать, что нужно сделать быстрее - получить первую запись или получить все записи.
Как двигаться по вперед по result set после его получения - без разницы, скорость будет одинаковая. Любая СУБД, насколько мне известно, отдает полученные в result set записи той или иной формой курсора (явного, неявного - без разницы).
Если в MS SQL иначе - то вот вам еще одно различие между базами, непреодолимое способом записи SQL, по стандарту ANSI или по стандарту СУБД
-
> Это как ? Ты хочешь сказать, что сформировать result set
> быстрее, чем двигаться по нему ?
Ну это даже в оракле быстрее.
Массовые апдейты я вообще иногда инсертами делаю.
-
> Ega23 (20.05.2009 14:40:59) [59]
Да зачем мне курсоры, при наличии механизма FROM
-
> Если в MS SQL иначе
В ms sql курсоры мало того, что дебильные по синтаксису, так еще и настолько тормозные, что в BOL прямо было прописано - по возможности ими не пользоваться.
-
> Массовые апдейты я вообще иногда инсертами делаю.
Дурное дело нехитрое
-
> Любая СУБД, насколько мне известно, отдает полученные в result set записи той или иной формой курсора (явного, неявного - без разницы).
в mssql очевидно не так... т.к. если бы было подобие курсора то тригеры бы срабатывали на одну запись, а они работают там "на пакет".
> что в BOL прямо было прописано - по возможности ими не пользоваться.
а в оракле значит в хелпе обманывают, что они быстрее? очень плохо.
-
> т.к. если бы было подобие курсора то тригеры бы срабатывали
> на одну запись, а они работают там "на пакет".
триггеры на SELECT ?
-
> триггеры на SELECT ?
на update/insert
-
sniknik © (20.05.09 17:12) [69]
В update/insert нет курсоров - не с чем сравнивать.
А насчет срабатывания триггеров - в чудесном оракле есть возможность указать метод срабатывания триггеров - на каждую строку или на весь оператор
-
> В update/insert нет курсоров - не с чем сравнивать.
как же не с чем? а синтаксис с CURRENT OF, т.е. то с чего начали.
-
sniknik © (20.05.09 17:29) [71]
> как же не с чем? а синтаксис с CURRENT OF, т.е. то с чего
> начали.
А почитать синтаксис не ? :) Там еще и SELECT участвует
-
> Там еще и SELECT участвует
селект в описании курсора это не настоящий селект... это всего лишь условие по которому выбираются записи. ну да, условие имеет вид селекта ну и что?
-
> Юрий Зотов © (18.05.09 17:15) [13]
> Люди, вы гиганты. Спасибо.
Хотя бы только из-за этого, я бы уже прекратил постить в эту ветку
:(
-
> селект в описании курсора это не настоящий селект...
критерии "настоящего" SELECT в студию
> ну и что?
А о чем вообще дискуссия ?
-
> критерии "настоящего" SELECT в студию
возвращает выборку, т.е. рекордсет, куда, сервер/клиент неважно. если же это просто запись из которой другие команды берут условия для собственной работы, а она сама ничего не делает, то это не настоящий селект.
> А о чем вообще дискуссия ?
не знаю. ты спрашиваешь/комментируешь, я отвечаю.
-
> возвращает выборку, т.е. рекордсет, куда, сервер/клиент
> неважно. если же это просто запись из которой другие команды
> берут условия для собственной работы, а она сама ничего
> не делает, то это не настоящий селект.
Я полагаю, есть смысл прекратить дискуссию
-
> sniknik © (20.05.09 16:58) [67]
> а в оракле значит в хелпе обманывают, что они быстрее? очень
> плохо.
быстрее, чем что?
-
> быстрее, чем что?
читать не умеешь? или выборочно, раньше фразы ничего не воспринимается?
быстрее пакетных команд, типа проход курсором для апдейта быстрее чем апдейт с from, или составление рекордсета по курсору быстрее чем селект.
ну так получается, судя по тому что мне тут говорят. и не верить нельзя, т.к. говорят, что так в оракле который я не знаю.