Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
Glory
numbers
Glory,

да, если изменить порядок, то порядок будет изменен.
как я уже указывал на maxdop - можно и без индексов всё сломать.

И что будет, если оптимизатор сам выберет такой индекс ?
Что будет, если в таблице не будет нужного индекса ?


наверно можно такую ситуацию предусмотреть? и в случае вашего варианта кода напр. указать index=1

"если в таблице не будет нужного индекса" - ...не очень понимаю что тут спорного. написан код, гарантирующий наличие такого индекса и на него рассчитывающий.

ваш пример с поломкой апдейта не сработал бы (с поломкой) если бы вы не указали оптимизатору созданный вами индекс/он бы не выбрал сам. я понимаю что суть вашего контрпримера в наличии такого индекса и не пишу "а вот зато если бы его не было!!!"
10 авг 11, 15:38    [11098648]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Glory
Member

Откуда:
Сообщений: 104751
numbers
ваш пример с поломкой апдейта не сработал бы (с поломкой) если бы вы не указали оптимизатору созданный вами индекс/он бы не выбрал сам. я понимаю что суть вашего контрпримера в наличии такого индекса и не пишу "а вот зато если бы его не было!!!"

Вот он выбрал сам
declare @number varchar(100) 
set @number = '0000010002003400'

create table #numbers
(
  num varchar(100),
  pos int,
  startpos int,
--  primary key nonclustered (pos)
)
create clustered index idx1 on #numbers(num)

;with nm (n, pos)
as
(
  select substring(@number, 1, 1), 1
  union all
  select substring(@number, pos+1, 1), pos+1
  from nm
  where pos < len(@number)
)
insert #numbers
select n1.*, n2.pos
from nm n1
cross apply
(
  select pos = min(pos)
  from nm n2
  where n2.n <> '0'
) n2

delete #numbers
where pos < startpos

declare @num varchar(100)

update nm set
  @num = num = ISNULL(@num, '') + nm.num
from #numbers nm 
--with(index=2)

select num 
from #numbers nm1 
where not exists(select * from #numbers nm2 where nm2.pos > nm1.pos)

drop table #numbers
10 авг 11, 15:40    [11098664]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
Shakill
numbers
Glory,

да, если изменить порядок, то порядок будет изменен.
как я уже указывал на maxdop - можно и без индексов всё сломать.


то есть при использовании такой конструкции с update надо стопроцентно знать, какой индекс будет использован и какой maxdop, т.к. это повлияет не только на скорость исполнения, но и на сам результат. красота! )


понимать что где, как и в каком окружении будет работать в целом как бы вообще не мешает...
maxdop указывают, понимая на что это повлияет, предварительно получив факты, подтверждающие правильность такого решения.
хинты на индексы указывают тоже не ткнув пальцем небо.
10 авг 11, 15:40    [11098667]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
Glory
Вот он выбрал сам


и я его понимаю

Glory
create clustered index idx1 on #numbers(num)


"что ты мне дал, то я и перепутал" (с)
10 авг 11, 15:42    [11098684]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
numbers
Shakill
пропущено...


то есть при использовании такой конструкции с update надо стопроцентно знать, какой индекс будет использован и какой maxdop, т.к. это повлияет не только на скорость исполнения, но и на сам результат. красота! )


понимать что где, как и в каком окружении будет работать в целом как бы вообще не мешает...
maxdop указывают, понимая на что это повлияет, предварительно получив факты, подтверждающие правильность такого решения.
хинты на индексы указывают тоже не ткнув пальцем небо.


вы понимаете, что результат работы нормальнеого sql-кода не должен зависеть от наличия/отсутствия индексов и степени параллелизма никак, т.к. эти сущности не относятся к пользовательским данным? если зависимость есть - это говнокод
10 авг 11, 15:43    [11098689]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Glory
Member

Откуда:
Сообщений: 104751
numbers
Glory
Вот он выбрал сам


и я его понимаю

Glory
create clustered index idx1 on #numbers(num)


"что ты мне дал, то я и перепутал" (с)

И где ваше хваленое "это работает" ?
10 авг 11, 15:44    [11098703]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
Shakill
numbers
пропущено...


понимать что где, как и в каком окружении будет работать в целом как бы вообще не мешает...
maxdop указывают, понимая на что это повлияет, предварительно получив факты, подтверждающие правильность такого решения.
хинты на индексы указывают тоже не ткнув пальцем небо.


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


что за чушь? (без тени резкости в ответе)

я понимаю о чем вы, но не понимаю зачем. есть 2000 сервер без кучи всяких вкусностей из 2005 и 2008, есть задачи которые не смотря ни на что нужно решать имеющимися средствами. есть решения. есть пустые рассуждения.
10 авг 11, 15:48    [11098734]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
Glory
numbers
пропущено...


и я его понимаю

пропущено...


"что ты мне дал, то я и перепутал" (с)

И где ваше хваленое "это работает" ?


вы изменили суть так, что это работать не будет... давайте посреди кода напишем "adsf" и скажем - вот оно даже не компилится.
к чему все это?
10 авг 11, 15:49    [11098752]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Glory
Member

Откуда:
Сообщений: 104751
numbers
есть решения. есть пустые рассуждения.

Это вы про свои рассуждения ?
Огласите список всех ограничений, которые влияют на _результат_ вашего решения
10 авг 11, 15:49    [11098756]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Glory
Member

Откуда:
Сообщений: 104751
numbers
вы изменили суть так,

Суть чего я изменил ? Я на своей таблице не могу создавать нужные мне индексы ? Или не могу использовать хинты ?
10 авг 11, 15:50    [11098768]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
Glory
numbers
есть решения. есть пустые рассуждения.

Это вы про свои рассуждения ?
Огласите список всех ограничений, которые влияют на _результат_ вашего решения


приведенный пример работает, заставить его не работать не изменив код вам не удалось.
буду счастлив узнать в каком окружении этот код не работает - не "из принципа типа васся, докажь!", а потому что ценность у этих знаний есть.
10 авг 11, 15:53    [11098794]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
numbers, не стоит спорить ради спора. Ваше решение далеко не самое лучшее, тем более, что альтернативные варианты есть. Закладывать потенциальные ловушки можно конечно, но лучше - врагам, чтобы им жизнь малиной не казалась.
10 авг 11, 15:54    [11098798]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Glory
Member

Откуда:
Сообщений: 104751
numbers
приведенный пример работает, заставить его не работать не изменив код вам не удалось.

Да что вы говорите
10 авг 11, 15:54    [11098807]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
Glory
numbers
вы изменили суть так,

Суть чего я изменил ? Я на своей таблице не могу создавать нужные мне индексы ? Или не могу использовать хинты ?


прекрасно понимая что код сломается вы создали условия чтобы он таки сломался.
с этим невозможно спорить - каждый имеет полное право так делать.
10 авг 11, 15:56    [11098825]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Glory
Member

Откуда:
Сообщений: 104751
numbers
прекрасно понимая что код сломается вы создали условия чтобы он таки сломался.

Вы хотите сказать, что не существует таблиц с предложенным мною индексом ?
Или что ваше решение _ограничено_ наличием специфического индекса ?
10 авг 11, 15:58    [11098851]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
kDnZP
numbers, не стоит спорить ради спора. Ваше решение далеко не самое лучшее, тем более, что альтернативные варианты есть. Закладывать потенциальные ловушки можно конечно, но лучше - врагам, чтобы им жизнь малиной не казалась.


ходы аппонентов - не "просто ради спора"? есть код, который работает, есть условности.
есть обстоятельства, в которых выбор средств ограничен.
можно через временную табличку? можно. можно через xml? как-то тоже можно.
а приведенный апдейт выполнит поставленную задачу? да выполняет.
10 авг 11, 15:58    [11098866]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
Glory
numbers
прекрасно понимая что код сломается вы создали условия чтобы он таки сломался.

Вы хотите сказать, что не существует таблиц с предложенным мною индексом ?
Или что ваше решение _ограничено_ наличием специфического индекса ?


вы сами прекрасно знаете что кроме специфического индекса ничто не заставит этот апдейт работать в нужном порядке
10 авг 11, 16:00    [11098888]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Glory
Member

Откуда:
Сообщений: 104751
numbers
а приведенный апдейт выполнит поставленную задачу? да выполняет.

Так будут оглашены ограничения, при которых апдейт гарантирует результат ?
Или для вас результат не важен ?
10 авг 11, 16:00    [11098898]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Glory
Member

Откуда:
Сообщений: 104751
numbers
вы сами прекрасно знаете что кроме специфического индекса ничто не заставит этот апдейт работать в нужном порядке

А как же еще maxdop 1 ? Мне эти все проверки писать перед запуском запроса что ли ?
10 авг 11, 16:01    [11098910]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
numbers
вы сами прекрасно знаете что кроме специфического индекса ничто не заставит этот апдейт работать в нужном порядке
Зачем писать код, который можно сломать, сделав далеко не очевидную для этого кода вещь, причем не сразу, а, к примеру, через пару лет? Зачем расставлять себе грабли?
10 авг 11, 16:01    [11098912]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
numbers,

это уже читали: Вопрос на злобу дня - Просмотр кластеризованного индекса - Часть II?
Фома неверующий...
10 авг 11, 16:03    [11098927]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
Гавриленко Сергей Алексеевич
numbers
вы сами прекрасно знаете что кроме специфического индекса ничто не заставит этот апдейт работать в нужном порядке
Зачем писать код, который можно сломать, сделав далеко не очевидную для этого кода вещь, причем не сразу, а, к примеру, через пару лет? Зачем расставлять себе грабли?


про красоту и грабли давайте во втором раунде ))) шутка.

мне доказывают что код не работает. рад бы узнать в каких обстоятельствах, пока не получается.
10 авг 11, 16:03    [11098928]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
iap
numbers,

это уже читали: Вопрос на злобу дня - Просмотр кластеризованного индекса - Часть II?
Фома неверующий...


ок, пошел читать. может "температура" снизится пока.
10 авг 11, 16:05    [11098935]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
Glory
Member

Откуда:
Сообщений: 104751
numbers
мне доказывают что код не работает. рад бы узнать в каких обстоятельствах, пока не получается.

Вы слепой и глухой наверное. Но не думайте, что другие верят в ваш чудо метод
10 авг 11, 16:06    [11098943]     Ответить | Цитировать Сообщить модератору
 Re: Результат SELECT-а в одну строку  [new]
numbers
Guest
Glory
numbers
мне доказывают что код не работает. рад бы узнать в каких обстоятельствах, пока не получается.

Вы слепой и глухой наверное. Но не думайте, что другие верят в ваш чудо метод


какой чудо-метод к черту?!

еще раз: искренне хочу поверить что это не работает. расскажите как повторить.
10 авг 11, 16:08    [11098956]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить