Конференция "Базы" » Update одной таблицы по условию из другой таблицы [DB2]
 
  • Игорь Шевченко © (20.05.09 15:41) [60]

    > Курсоры в TSQL медленные.


    Это как ? Ты хочешь сказать, что сформировать result set быстрее, чем двигаться по нему ?

    То есть,
    SELECT foo FROM bar
    будет быстрее, чем

    CURSOR foobar IS SELECT foo FROM bar;

    OPEN foobar;
    FETCH foobar INTO foobardata;
    ...

    ?
  • sniknik © (20.05.09 16:10) [61]
    > Ты хочешь сказать, что сформировать result set быстрее, чем двигаться по нему ?
    смотря для чего, если выбрать одну запись где то ближе к началу то курсором быстрее (если есть индекс то может и нет), если цель в обработке всех то вариант пакетной команды очевидно будет быстрее чем перебор и обработка тех же самых записей по одной в курсоре.

    и это, имхо, от языка не зависит. даже в чудесном оракле должно быть тоже самое.
  • Игорь Шевченко © (20.05.09 16:32) [62]
    sniknik ©   (20.05.09 16:10) [61]

    В чудесном оракле для получения result set можно указать, что нужно сделать быстрее - получить первую запись или получить все записи.
    Как двигаться по вперед по result set после его получения - без разницы, скорость будет одинаковая. Любая СУБД, насколько мне известно, отдает полученные в result set записи той или иной формой курсора (явного, неявного - без разницы).

    Если в MS SQL иначе - то вот вам еще одно различие между базами, непреодолимое способом записи SQL, по стандарту ANSI или по стандарту СУБД
  • ANB (20.05.09 16:33) [63]

    > Это как ? Ты хочешь сказать, что сформировать result set
    > быстрее, чем двигаться по нему ?

    Ну это даже в оракле быстрее.

    Массовые апдейты я вообще иногда инсертами делаю.
  • Anatoly Podgoretsky © (20.05.09 16:34) [64]
    > Ega23  (20.05.2009 14:40:59)  [59]

    Да зачем мне курсоры, при наличии механизма FROM
  • ANB (20.05.09 16:35) [65]

    > Если в MS SQL иначе

    В ms sql курсоры мало того, что дебильные по синтаксису, так еще и настолько тормозные, что в BOL прямо было прописано - по возможности ими не пользоваться.
  • Игорь Шевченко © (20.05.09 16:54) [66]

    > Массовые апдейты я вообще иногда инсертами делаю.


    Дурное дело нехитрое
  • sniknik © (20.05.09 16:58) [67]
    > Любая СУБД, насколько мне известно, отдает полученные в result set записи той или иной формой курсора (явного, неявного - без разницы).
    в mssql очевидно не так... т.к. если бы было подобие курсора то тригеры бы срабатывали на одну запись, а они работают там "на пакет".

    > что в BOL прямо было прописано - по возможности ими не пользоваться.
    а в оракле значит в хелпе обманывают, что они быстрее? очень плохо.
  • Игорь Шевченко © (20.05.09 17:08) [68]

    > т.к. если бы было подобие курсора то тригеры бы срабатывали
    > на одну запись, а они работают там "на пакет".


    триггеры на SELECT ?
  • sniknik © (20.05.09 17:12) [69]
    > триггеры на SELECT ?
    на update/insert
  • Игорь Шевченко © (20.05.09 17:17) [70]
    sniknik ©   (20.05.09 17:12) [69]

    В update/insert нет курсоров - не с чем сравнивать.

    А насчет срабатывания триггеров - в чудесном оракле есть возможность указать метод срабатывания триггеров - на каждую строку или на весь оператор
  • sniknik © (20.05.09 17:29) [71]
    > В update/insert нет курсоров - не с чем сравнивать.
    как же не с чем? а синтаксис с CURRENT OF, т.е.  то с чего начали.
  • Игорь Шевченко © (20.05.09 18:21) [72]
    sniknik ©   (20.05.09 17:29) [71]


    > как же не с чем? а синтаксис с CURRENT OF, т.е.  то с чего
    > начали.


    А почитать синтаксис не ? :) Там еще и SELECT участвует
  • sniknik © (20.05.09 18:30) [73]
    > Там еще и SELECT участвует
    селект в описании курсора это не настоящий селект... это всего лишь условие по которому выбираются записи. ну да, условие имеет вид селекта ну и что?
  • Alarm © (20.05.09 18:49) [74]
    > Юрий Зотов ©   (18.05.09 17:15) [13]
    > Люди, вы гиганты. Спасибо.


    Хотя бы только из-за этого, я бы уже прекратил постить в эту ветку
    :(
  • Игорь Шевченко © (20.05.09 18:49) [75]

    > селект в описании курсора это не настоящий селект...


    критерии "настоящего" SELECT в студию


    > ну и что?


    А о чем вообще дискуссия ?
  • sniknik © (20.05.09 18:59) [76]
    > критерии "настоящего" SELECT в студию
    возвращает выборку, т.е. рекордсет, куда, сервер/клиент неважно. если же это просто запись из которой другие команды берут условия для собственной работы, а она сама ничего не делает, то это не настоящий селект.

    > А о чем вообще дискуссия ?
    не знаю. ты спрашиваешь/комментируешь, я отвечаю.
  • Игорь Шевченко © (20.05.09 19:05) [77]

    > возвращает выборку, т.е. рекордсет, куда, сервер/клиент
    > неважно. если же это просто запись из которой другие команды
    > берут условия для собственной работы, а она сама ничего
    > не делает, то это не настоящий селект.


    Я полагаю, есть смысл прекратить дискуссию
  • Petr V. Abramov © (20.05.09 19:08) [78]

    > sniknik ©   (20.05.09 16:58) [67]


    > а в оракле значит в хелпе обманывают, что они быстрее? очень
    > плохо.

    быстрее, чем что?
  • sniknik © (20.05.09 19:53) [79]
    > быстрее, чем что?
    читать не умеешь? или выборочно, раньше фразы ничего не воспринимается?
    быстрее пакетных команд, типа проход курсором для апдейта быстрее чем апдейт с from, или составление рекордсета по курсору быстрее чем селект.
    ну так получается, судя по тому что мне тут говорят. и не верить нельзя, т.к. говорят, что так в оракле который я не знаю.
 
Конференция "Базы" » Update одной таблицы по условию из другой таблицы [DB2]
Есть новые Нет новых   [134473   +32][b:0.001][p:0.001]