|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Доброе утро, коллеги! Помогите пожалуйста развеять сомнения. Есть такой прекрасный код Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
1. Правильно ли я понимаю, что товарищ хочет получить последовательную нумерацию DocNum в пределах AppCode? Может ещё что-то? 2. Можно ли такую конструкцию считать безопасной для условий - update без where - один единственный кластерный индекс как указано в схеме Или есть у такого синтаксиса "подводные камни"? Код не мой, думаю "бодаться" с партнёрами из-за него или пусть остаётся.. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 09:22 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Zulus Правильно ли я понимаю, что товарищ хочет получить последовательную нумерацию DocNum в пределах AppCode? Может ещё что-то? Zulus Можно ли такую конструкцию считать безопасной для условий - update без where - один единственный кластерный индекс как указано в схеме Но никто не гарантирует, что будет можно после очередного SP, CU или в новой версии. Мое имхо - лучше переписать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 09:49 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm Мое имхо - лучше переписать. Вот и моё мнение точно такое-же, но тяжеловато с аргументацией для этого конкретного примера :) invm, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 10:41 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Zulus тяжеловато с аргументацией для этого конкретного примера Сканирование может быть упорядоченное - в порядке ключей индеса, а может быть неупорядоченное - в порядке распределения страниц. Во втором случае, вместо последовательной нумерации может получиться каша. Насколько я знаю, сейчас неупорядоченное сканирование к update неприменимо. Но будет ли так и далее - никто не знает. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 10:57 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Zulus, Создание таблицы Код: sql 1. 2. 3. 4. 5. 6. 7.
Наполнение данными Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Обновление Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 11:15 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint Обновление Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Все гораздо банальнее. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 11:52 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, авторВсе гораздо банальнее. Все ещё гораздо более банальнее. вот код автора Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
вот результат выполнения кода автора (и моего) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
вот результат выполнения Вашего кода Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 12:08 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint вот результат выполнения кода автора А чтобы правильно готовить примеры, нужно понять как работает код автора. Тогда монстры, подобные вашему, не потребуются. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 12:28 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, согласен ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 12:45 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Правильно будет так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Но, не могли бы Вы наполнить таблицу данными так, чтобы код автора и Ваш код при выполнении давали одинаковый результат ? используя все возможные значения для поля AppCode ))) в том числе и '', никаких же ограничений на это поле, кроме NOT NULL - нет ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 12:58 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint не могли бы Вы наполнить таблицу данными так, чтобы код автора и Ваш код при выполнении давали одинаковый результат ? Чтобы исходный код и мой давали одинаковый результат @Part нужно инициализировать значением, которого нет в таблице . ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 13:06 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, нет, это не я решил, вот код автора Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
обратите внимание авторset @Part = '' и авторAppCode nvarchar(60) not null позволяет хранить любые строковые значения отличные от NULL, или я не прав ? авторЧтобы исходный код и мой давали одинаковый результат @Part нужно инициализировать значением, которого нет в таблице. Это же не согласуется с определением таблицы и кодом автора ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 13:09 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint нет, это не я решил Почему-то решили, что если set @Part = '', то и первая строка в таблице должна быть с AppCode = '' Я же говорю - Вы не разобрались, как работает данный update. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 13:45 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Ну как не конструктивно, ну если есть у автора возможный изъян в логике (а может и предусмотренное поведение), почему не говорить о CHECK на поле AppCode, который не позволит вставить '', но сейчас-то в этих условиях я делаю все что позволяет приведённая структура авторПочему-то решили, что если set @Part = '', то и первая строка в таблице должна быть с AppCode = '' не я это решил, опять же структура данных, если я сделаю Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
то все равно строки со значением AppCode = '' будут первыми потому что Код: sql 1.
(опять же структура) и снова результат выполнения моего кода будет таким же как и результат работы кода автора, в отличие от представленного третьего варианта Повторюсь, не конструктивно, хотите доказать свою точку зрения как минимум покажите такой же результат, что и до рефакторинга, с использованием среза данных, параметры которых описаны в структуре таблицы, а не ссылайтесь на условия, которых нет в постановке задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 14:26 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint все равно строки со значением AppCode = '' будут первым Только ORDER BY в запросе! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 14:31 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint не я это решил, опять же структура данных, если я сделаю У автора типичная задача - пронумеровать строки в разрезе определенного критерия и в определенном порядке. А не ту, котору придумали Вы - "Записать в DocNumber последовательно возрастающее значение, начиная с 2 для всех AppCode = '', а для остальных AppCode - 1" ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 14:38 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
iap, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Нет ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 14:40 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Результат, критерий истины только результат, код в студию Может Вы диагноз неправильно поставили ? invm Zulus Правильно ли я понимаю, что товарищ хочет получить последовательную нумерацию DocNum в пределах AppCode? Может ещё что-то? Zulus Можно ли такую конструкцию считать безопасной для условий - update без where - один единственный кластерный индекс как указано в схеме Но никто не гарантирует, что будет можно после очередного SP, CU или в новой версии. Мое имхо - лучше переписать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 14:44 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
iap, моё почтение! Согласен с тем, что порядок записей гарантируется order by, но в данном случае других вариантов не вижу: - кластерный индекс (один единственный) - параллелизма нет (для текущей версии) Коллеги, спасибо всем участникам :) Код не мой - я как раз хочу его переделать, но 100% владелец будет вредничать и задавать много "почему" ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 15:30 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Всех с наступающим НГ !!! Спасибо за обсуждение !!! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 15:37 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint Может Вы диагноз неправильно поставили ? entrypoint Нет ? Почему, объяснено тут - 22051347 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 15:39 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Там добавление данных INSERT, а не UPDATE про который вы пишите. Субъективные выводы, ссылки на самого же себя, а главное, полное игнорирование доводов, нет ни одного довода, который я бы не подкрепил кодом invm entrypoint Может Вы диагноз неправильно поставили ? entrypoint Нет ? Почему, объяснено тут - 22051347 как можно написать такое когда приведен довод в виде кода, который можно запустить, покрутить, попробовать. Может, если у вас нет желания создать массив данных, с которыми бы отработал Ваш код, у Вас есть желание опровергнуть Код: sql 1.
не на словах, а кодом ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 16:05 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Zulus, Да, порядок строк только ORDER BY, но в данном случае я говорю о том, что первой в таблице будет любая строка со значением AppCode=''. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 16:09 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
кстати дубли с AppCode != '' никто не отменял, так что почему нумеровать в нелогичном случае нужно именно с двух тоже не понятно ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 16:20 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
nullin, Да, непонятно Но код автора работает именно так и автор не просил его исправить, автор хотел узнать его назначение, поэтому это поведение кода я воспринимаю как данность и проводя рефакторинг сохранил это поведение. Все доводы моего оппонента в лице invm, основаны на предположениях не подкрепленных ничем - "entrypoint не понимает", "entrypoint не разобрался", "entrypoint ошибается", я же в свою очередь следую только той информации, которая была представлена автором и свои доводы подкрепляю ссылками на структуру базы данных (представленную автором), примерами кода, результатами сравнения. invm, утверждает что я не могу использовать значение '' для AppCode, но я вижу что структура таблицы мне это не запрещает, это одно из валидных значений этой колонки, я утверждаю что согласно опять же структуре таблицы первыми строками в таблице всегда будут строки со значением AppCode='' независимо от порядка вставки, и.т.д. и.т.п., в ответ я получаю бездоказательные возражения Это некорректно, непрофессионально, с учетом того, что код представленный invm выдает результат отличный от результата автора. Код, только код критерий истины ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 16:46 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint я утверждаю что согласно опять же структуре таблицы первыми строками в таблице всегда будут строки со значением AppCode='' 22051566 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 17:00 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
nullin, Цитата entrypoint Zulus, Да, порядок строк только ORDER BY, но в данном случае я говорю о том, что первой в таблице будет любая строка со значением AppCode=''. entrypoint iap, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Нет ? Это мой код подтверждающий мое утверждение Здесь место, для Вашего кода, опровергающего его Код: sql 1. 2.
P.S. Код, только код, без слов и спекуляций ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 17:05 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
iap, Может и у Вас есть код ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 17:07 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint Там добавление данных INSERT, а не UPDATE про который вы пишите. entrypoint Субъективные выводы, ссылки на самого же себя, а главное, полное игнорирование доводов, нет ни одного довода, который я бы не подкрепил кодом Если не хватает знаний для понимания написанного и нет желания даже допустить, что Вы далеко не самый умный на свете - Ваши трудности. Ваш код доводом не является, ибо не делает того, что требуется, даже с учетом Ваших домыслов о AppCode = '' Еще раз - потрудитесь понять, что делает этот update. Затем сравните результат исходного update с Вашим творением вот на таком Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
А потом, так уж и быть, вот с этим Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 17:10 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint, лови ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 17:28 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, в этой редакции Ваш код возвращает точно то, что и код автора и мой код Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Зачем вот это все, вот эти оскорбления, если Вы в конце концов сделали то же что и я ? авторЕсли не хватает знаний для понимания написанного и нет желания даже допустить, что Вы далеко не самый умный на свете - Ваши трудности. Ваш код доводом не является, ибо не делает того, что требуется, даже с учетом Ваших домыслов о AppCode = '' Еще раз - потрудитесь понять, что делает этот update. Затем сравните результат исходного update с Вашим творением вот на таком[src] Как насчет кода про кластерный индекс ? Помните, нужно опровергнуть ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 17:38 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint Нет ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 17:42 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint Код, только код, без слов и спекуляций Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Или - https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=81b441920d46b4424d9ff7bfc92d7f70 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 17:45 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
nullin, )))))))) Остроумно, отношусь как к хорошей шутке. Есть способ проще ))))) Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 17:45 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint, у меня там нет order by во первых, а во вторых, вы наверняка, сами смекаете, что для join оптимизатор может выбрать loop/merge/hash/adaptive join и без явного указания. Что же качается вашего order by newid(), то select без явного указания сортировки эквивалентен select ... order by (select null) - может сейчас наступит просветление? Иначе у меня складывается впечатление уже, что вы троллите. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 17:53 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Мое утверждение верно, потому что вы подменили кластерный индекс нашей таблицы по (AppCode, RepaymentDate) на кластерный индекс по Id Информация к размышлению Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 17:56 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
nullin, ну что такое Нужен прямой SELECT который возвращает строки в физическом порядке а у Вас соединения, указания к соединению HASH, это уже сортировки Вы выводите строки не согласно физическому порядку, а согласно значению рассчитанного хэш порядок которого отличается от физического вот фрагмент плана выполнения Вашего запроса соединение по хэш Код: xml 1. 2. 3. 4. 5.
а физический порядок AppCode + RepaymentDate Вот же о чем речь entrypoint invm, Ну как не конструктивно, ну если есть у автора возможный изъян в логике (а может и предусмотренное поведение), почему не говорить о CHECK на поле AppCode, который не позволит вставить '', но сейчас-то в этих условиях я делаю все что позволяет приведённая структура авторПочему-то решили, что если set @Part = '', то и первая строка в таблице должна быть с AppCode = '' не я это решил, опять же структура данных, если я сделаю Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
то все равно строки со значением AppCode = '' будут первыми потому что Код: sql 1.
(опять же структура) и снова результат выполнения моего кода будет таким же как и результат работы кода автора, в отличие от представленного третьего варианта Повторюсь, не конструктивно, хотите доказать свою точку зрения как минимум покажите такой же результат, что и до рефакторинга, с использованием среза данных, параметры которых описаны в структуре таблицы, а не ссылайтесь на условия, которых нет в постановке задачи. ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 18:15 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint Мое утверждение верно, потому что вы подменили кластерный индекс нашей таблицы по (AppCode, RepaymentDate) на кластерный индекс по Id Хоть бы матчасть подучили что ли, прежде чем дискутировать... https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=160f5e9acfeba984e1c3534a55b597a3 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 18:19 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Снова оскорбления )))) Только код, только код TOP - это не физический порядок, как раз TOP и требует ORDER BY, т.е. - согласно Майкрософт конструкция TOP без ORDER BY не корректна https://docs.microsoft.com/ru-ru/sql/t-sql/queries/top-transact-sql?view=sql-server-ver15 Код: sql 1.
т.е. использование TOP без ORDER BY выдает непредсказуемый результат (в нашем случае не в физическом порядке) P.S. Это вы имели ввиду когда говорили про матчасть ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 18:33 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint, хотите все 1115 записей посмотреть? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 18:37 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint Снова оскорбления )))) Код был дан. Вам ничего не мешает убрать оттуда TOP и посмотреть на результат. Или страшно? entrypoint TOP - это не физический порядок, как раз TOP и требует ORDER BY, т.е. - согласно Майкрософт конструкция TOP без ORDER BY не корректна https://docs.microsoft.com/en-us/sql/t-sql/queries/top-transact-sql?view=sql-server-ver15 Limits the rows returned in a query result set to a specified number of rows or percentage of rows in SQL Server 2019 (15.x). When you use TOP with the ORDER BY clause, the result set is limited to the first N number of ordered rows. Otherwise, TOP returns the first N number of rows in an undefined order.В процитированном чего-нибудь есть про физический порядок? Где вообще документировано утверждение, что строки возвращаются в физическом порядке? В общем, код Вам был дан. Если не в состоянии понять как он работает - гуглите. В гугле полно знаний, если гуглить правильно. Ключевые слова для поиска - sql server allocation order scan ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 18:50 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Удивительно, получил тот же самый результат, строки в таблице хранятся согласно кластерному индексу и AppCode = '' по прежнему в первых рядах ((( Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.
Т.е. нет, никакого способа при существующей структуре кластерного индекса получить другое поведение )))) кластерный складывает строки так и только так (физически !!!) утверждение авторто все равно строки со значением AppCode = '' будут первыми потому что create clustered index cx_Repayments on dbo.Repayments(AppCode, RepaymentDate) не опровергнуто, ибо (матчасть) авторКластеризованные индексы сортируют и хранят строки данных в таблицах или представлениях на основе их ключевых значений. Этими значениями являются столбцы, включенные в определение индекса. Существует только один кластеризованный индекс для каждой таблицы, так как строки данных могут храниться в единственном порядке. авторСтроки данных в таблице хранятся в порядке сортировки только в том случае, если таблица содержит кластеризованный индекс. Если у таблицы есть кластеризованный индекс, то таблица называется кластеризованной. Если у таблицы нет кластеризованного индекса, то строки данных хранятся в неупорядоченной структуре, которая называется кучей. https://docs.microsoft.com/ru-ru/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described?view=sql-server-ver15 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 12:13 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
nullin, Зачем ? В SELECT вы используете соединения подсказки, которые гарантировано возвращают строки в порядке отличном о порядка хранения записей в таблицы Нужно положить данные в таблицу так чтобы Код: sql 1. 2. 3. 4. 5.
вывел в первых строках что-то другое, а не AppCode = '' Ну а это, как указано выше, судя по всему - невозможно ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 12:18 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Думаю на этом можно остановиться, согласны ? Всех с наступающим Новым Годом !!! Счастья, здоровья, профессиональных успехов !!! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 12:19 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint кластерный складывает строки так и только так Авось поумнеете и сможет понять и что вам писали, и примеры, которые давали. Хотя, складывается впечатление, что Вы намеренно игнорируете все, что может подвергнуть сомнению сложившуюся у Вас картину мира. Вон даже в последнем примере выкинули select с tablock... Ну либо решили, потехи ради, всех потроллить перед НГ. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 12:48 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Вот она картина мира Код: sql 1. 2. 3. 4. 5. 6.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
AppCode='' - первые ))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 13:17 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint, Ну вот и опустились до откровенного вранья :) Да и запрос с синтаксической ошибкой :) Или до сих пор на 2000-м сидим? К сведению - TABLOCK не гарантируют Allocation Order Scan, а только делает его возможным. Об этом так же написано в статьях, которые было рекомендовано поискать и прочитать. Но, видимо, не в коня корм :) Успехов в лечении граблетерапией. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 13:32 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Как безосновательно, как самоуверенно (могли бы прежде проверить, а потом писать) никаких синтаксических ошибок ))))))) Готовы поспорить ? у Вас Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
на 2017-м не отрабатывает ? )))))))))))) даже если даже прокачать матчасть ? авторСледующие табличные указания можно задавать как с ключевым словом WITH, так и без него: NOLOCK, READUNCOMMITTED, UPDLOCK, REPEATABLEREAD, SERIALIZABLE, READCOMMITTED, TABLOCK, TABLOCKX, PAGLOCK, ROWLOCK, NOWAIT, READPAST, XLOCK, SNAPSHOT и NOEXPAND. Если такие табличные указания указываются без ключевого слова WITH, подсказки следует задавать отдельно https://docs.microsoft.com/ru-ru/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-ver15 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 13:49 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Буйный он какой-то... и подбородков то ли 4, то ли 12. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 14:08 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint Готовы поспорить ? Готов поспорить, что здесь только один клоун. Но к сожалению (ли?), он этого не осознает. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 14:10 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Подведем неутешительный (промежуточный итог) с чем вы были не согласны 1. Строки в таблице хранятся в порядке определенным кластерным индексом Код: sql 1. 2.
https://docs.microsoft.com/ru-ru/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described?view=sql-server-ver15 2. Использование TOP без ORDER BY выдает непредсказуемый результат Код: sql 1.
https://docs.microsoft.com/ru-ru/sql/t-sql/queries/top-transact-sql?view=sql-server-ver15 3. Считаете что конструкция Код: sql 1. 2. 3. 4. 5. 6.
содержит синтаксическую ошибку для MSSQL 2017 Код: sql 1.
https://docs.microsoft.com/ru-ru/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-ver15 Это хорошо, что у меня с Майкрософт одинаковое видение мира ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 14:11 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Руслан Дамирович, welcome у Вас то же не отрабатывает, то же синтаксическая ошибка ? ))) Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 14:12 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
все цирк уезжает ))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 14:15 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint invm, Подведем неутешительный (промежуточный итог) с чем вы были не согласны... Согласен только с 3-м пунктом, мой косяк. По остальным, пожалуйста, цитаты. И не уходите от темы, - вы склочно добивались кода, показывающего, что сканирование кластерного индекса происходит не всегда в порядке этого индекса. Таковой был дан на публичном проверенном ресурсе. Теперь ваша очередь дать на том же ресурсе код, подтверждающий вашу точку зрения - кластерный индекс всегда читается упорядоченно. Т.е. найти ошибку в моем примере и ее продемонстрировать. На всякий случай еще раз - читается, а не хранится Дерзайте. Руслан Дамирович Буйный он какой-то... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 14:45 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm entrypoint invm, Подведем неутешительный (промежуточный итог) с чем вы были не согласны... Согласен только с 3-м пунктом, мой косяк. По остальным, пожалуйста, цитаты. И не уходите от темы, - вы склочно добивались кода, показывающего, что сканирование кластерного индекса происходит не всегда в порядке этого индекса. Таковой был дан на публичном проверенном ресурсе. Теперь ваша очередь дать на том же ресурсе код, подтверждающий вашу точку зрения - кластерный индекс всегда читается упорядоченно. Т.е. найти ошибку в моем примере и ее продемонстрировать. На всякий случай еще раз - читается, а не хранится авторСтроки данных в таблице хранятся в порядке сортировки только в том случае, если таблица содержит кластеризованный индекс https://docs.microsoft.com/ru-ru/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described?view=sql-server-ver15 Дерзайте. Руслан Дамирович Буйный он какой-то... осталось два про хранение строк и TOP без ORDER BY )))) там цитаты из MSDN будете их опровергать ? P.S. про читать - это Ваша цитата авторКогда осознаете разницу между "складывает" и "читает", - возвращайтесь. моя вот авторто все равно строки со значением AppCode = '' будут первыми потому что create clustered index cx_Repayments on dbo.Repayments(AppCode, RepaymentDate) (опять же структура) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 14:57 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, invmПо остальным, пожалуйста, цитаты про TOP 22051889 invmentrypointTOP - это не физический порядок, как раз TOP и требует ORDER BY, т.е. - согласно Майкрософт конструкция TOP без ORDER BY не корректна Ну вот, вы еще не понимаете как работает TOP. Куда уж тут про кластерный индекс... про кластерный индекс 22051476 invmВы почему-то решили, что @Part нужно инициализировать первым значением из таблицы. Отсюда все проблемы 22051558 entrypointвсе равно строки со значением AppCode = '' будут первыми потому что create clustered index cx_Repayments on dbo.Repayments(AppCode, RepaymentDate) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 15:31 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint про TOP 22051889 entrypoint Вы слишком много додумываете. И почему-то считаете додуманное абсолютной истиной. Ну и опять вполне ожидаемо игнорируете неудобное: invm И не уходите от темы, - вы склочно добивались кода, показывающего, что сканирование кластерного индекса происходит не всегда в порядке этого индекса. Таковой был дан на публичном проверенном ресурсе. Теперь ваша очередь дать на том же ресурсе код, подтверждающий вашу точку зрения - кластерный индекс всегда читается упорядоченно. Т.е. найти ошибку в моем примере и ее продемонстрировать. И на закучку про "хранение в порядке индекса" Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 16:02 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, остаётся надеяться, на то, что той околесицей с которой вы боритесь, не были оболванены менее подкованные программисты и пользователи ранее. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 17:46 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
nullin, не испытываю оптимизма по данному вопросу :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 19:06 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint согласно Майкрософт конструкция TOP без ORDER BY не корректна Не Microsoft, а ANSI SQL 92 стандарт. У MS SELECT TOP n является апокрифом. FETCH FIRST N ROWS ONLY появилось в стандарте ANSI SQL 2008. Ближе к типовому выражения является ORDER BY ... OFFSET ... FETCH... . ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 20:55 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Владислав Колосов, однако сильно.. wikiАпокриф — произведение религиозной литературы, посвящённое по преимуществу событиям и лицам Священной и церковной истории, не включённое в канон Церковью. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2020, 13:45 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Перечитайте внимательно, там ответы на все Ваши вопросы Пример, непонятно про что. Ясно, что используя ORDER BY записи можно вернуть в любом порядке, разговор о том в каком порядке хранятся строки в таблице Если Вы будет использовать конструкцию без ORDER BY Вы всё равно получите список хранящийся в таблице отсортированным по кластерному индексу, в вашем случае это кластерный индекс по полю id, который создается при создании ограничений PRIMARY KEY (сокращенное от PRIMARY KEY CLUSTERED) авторИндексы создаются автоматически при определении ограничений PRIMARY KEY или UNIQUE на основе столбцов таблицы. Например, при создании таблицы с ограничением UNIQUE Компонент Database Engine автоматически создает некластеризованный индекс. При настройке PRIMARY KEY Компонент Database Engine автоматически создает кластеризованный индекс, если он еще не существует. https://docs.microsoft.com/ru-ru/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described?view=sql-server-ver15 мало того, этот порядок хранения можно изменить удалив ограничение PRIMARY KEY и создав другой кластерный индекс, даже если затем удалить этот индекс порядок хранения сохраниться Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 11:07 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Владислав Колосов, Может всё-таки согласно документации Майкрософт ? авторВ инструкции SELECT всегда указывайте ORDER BY вместе с предложением TOP. Дело в том, что это единственный предсказуемый способ отбора строк предложением TOP. https://docs.microsoft.com/ru-ru/sql/t-sql/queries/top-transact-sql?view=sql-server-ver15 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 11:16 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint, речь идет об использовании TOP, а не ORDER BY. И никто не говорит о предсказуемости. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 11:18 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Владислав Колосов, В Вашем же сообщении так, или как-то иначе ? авторавторentrypoint согласно Майкрософт конструкция TOP без ORDER BY не корректна Не Microsoft, а ANSI SQL 92 стандарт. 22052442 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 11:24 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Продолжаем веселье :) entrypoint Перечитайте внимательно, там ответы на все Ваши вопросы Если вы считаете, "select * from table" и есть требуемое доказательство, то глубоко заблуждаетесь - это никак не показывает как именно хранятся строки и что они были прочитаны в порядке хранения. Пример, демонстрирующий порядок хранения на уровне индекса вы опять благополучно проигнорировали. Что неудивительно :) Вот вам очередной пример для игнорирования - порядок хранения на уровне страницы Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54.
А теперь, внимание, вопрос - если строки физически хранятся в порядке индекса, то что присходит при добавление строк в середину индекса? И немного усложним - при конкурентном добавлении в середину индекса? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 12:01 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Код: sql 1.
Все будет храниться в порядке определенном кластерным индексом, мы уже об этом говорили 22051573 и не важно, конкурентно, неконкурентно проверьте - если не верите уберите в своих селектах ORDER BY и получите список упорядоченный по кластерному индексу ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 12:38 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, авторЕсли вы считаете, "select * from table" и есть требуемое доказательство, то глубоко заблуждаетесь - это никак не показывает как именно хранятся строки и что они были прочитаны в порядке хранения. почему же тогда код приведенный мной в 22055414 работает именно так, как я это описываю ( "случайность - не думаю" ) авторИ кода, доказывающего, ваши утверждения до сих пор нет. Сделайте "select * from table" как-нибудь так, чтобы список был отсортирован не по кластерному индексу, а как-то иначе и все вопросы будут закрыты (используя меня как посредника Вы стали спорить с Майкрософт) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 12:44 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint используя меня как посредника Вы стали спорить с Майкрософт Или докажите, что записи в результате запроса без ORDER BY гарантированно ВСЕГДА вернутся в порядке кластерного индекса. Доказать-то можно только ссылкой на документацию производителя, никак иначе. Правда? Вы же не имеете доступа к исходным текстам SQL сервера? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 13:03 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
iap, Ой, да цитировано перецитировано (вот фрагментик 22052270 ) Перечитайте эту тему, здесь прямые ссылки на документацию или же сделайте так чтобы этот код работал по другому 22055414 приведите пример и всё, зачем флудить-то ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 13:11 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Этот код товарищу "гарантированно в порядке кластерного индекса" уже показывали? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 13:26 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint почему же тогда код приведенный мной в 22055414 работает именно так, как я это описываю ( "случайность - не думаю" ) entrypoint Сделайте "select * from table" как-нибудь так, чтобы список был отсортирован не по кластерному индексу, а как-то иначе и все вопросы будут закрыты Но вы придрлись к top. Рекомендацию убрать top и запустить еще раз вы, как обычно, проигнорировали. Где ответы на "неудобные" вопросы? В частности на invm А теперь, внимание, вопрос - если строки физически хранятся в порядке индекса, то что присходит при добавление строк в середину индекса? И немного усложним - при конкурентном добавлении в середину индекса? Уточню для непонятливых - что произойдет на уровне физического хранения, когда данные добавляются в середину индекса? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 13:29 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, авторУточню для непонятливых - что произойдет на уровне физического хранения, когда данные добавляются в середину индекса? Произойдет ровно то, о чем я уже писал )))) Внимательно читайте ))) Не через строку ))) Строки в таблице будут храниться в порядке определенном кластерным индексом ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 13:59 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, )))) вот это уже что-то )))) Согласен )))) invm, видите и вопросов нет ))))), а то уже третью страницу флудить )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 14:01 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint Произойдет ровно то, о чем я уже писал )))) Внимательно читайте ))) Не через строку ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 14:03 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint invm, видите и вопросов нет ))))), а то уже третью страницу флудить )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 14:07 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, тема закрыта ))) приз уходит Гавриленко Сергей Алексеевич ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 14:07 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, в 22055497 были такие слова "или же сделайте так чтобы этот код работал по другому" и в 22055478 было "Сделайте "select * from table" как-нибудь так, чтобы список был отсортирован не по кластерному индексу, а как-то иначе и все вопросы будут закрыты" А сделал это - Гавриленко Сергей Алексеевич, вот ему и орден (пришел, увидел, победил) а Вы правы, насчет авторДа ну? Этот пример ведь никак не подтверждает и не опровергает вашу теорию о физическом хранении строк индекса в порядке его ключа., потому что это не моя теория, это данность производителя MSSQL - Майкрсофт, которая отражена в документации по этому продукту авторКластеризованные индексы сортируют и хранят строки данных в таблицах или представлениях на основе их ключевых значений или не верите ? https://docs.microsoft.com/ru-ru/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described?view=sql-server-ver15 )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 14:17 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, Гавриленко Сергей Алексеевич Этот код товарищу "гарантированно в порядке кластерного индекса" уже показывали? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
entrypoint Гавриленко Сергей Алексеевич, )))) вот это уже что-то )))) Согласен )))) invm, видите и вопросов нет ))))), а то уже третью страницу флудить )))) P.S кстати, про гарантировано - это не моё, вот высказывания, но это все не я ))) 22051566 22052164 22055491 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 14:35 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint это данность производителя MSSQL - Майкрсофт, которая отражена в документации по этому продукту авторКластеризованные индексы сортируют и хранят строки данных в таблицах или представлениях на основе их ключевых значений Не надоело не отвечать на вопросы и выставляться идиотом? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 14:47 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Оскорбления, оскорбления ))) invm entrypoint это данность производителя MSSQL - Майкрсофт, которая отражена в документации по этому продукту пропущено... Не надоело не отвечать на вопросы и выставляться идиотом? ну читайте дальше, не торопитесь, следующее предложение, всё же однозначно, по-другому и понять невозможно )))) авторThere can be only one clustered index per table, because the data rows themselves can be stored in only one order . https://docs.microsoft.com/en-us/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described?view=sql-server-ver15 Черным же по белому написано авторВ таблице может быть только один кластеризованный индекс, поскольку сами строки данных могут храниться только в одном заказе . Хотите другую таблицу с индексом оформляйте новый заказ Или нет ? ))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 15:08 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint Оскорбления, оскорбления ))) entrypoint ну читайте дальше, не торопитесь, следующее предложение, всё же однозначно, по-другому и понять невозможно )))) Да и порядок хранения, на самом деле, к единственности кластерного индекса не имеет никакого отношения. Единственность кластерного индпекса (ранее 2005-го сервера) обуславливалась: а) его ключ используется как row locator, б) хранить на листовом уровне вместе с ключом еще и данные можно было только в одном индексе. Пункт б неактуален, начиная с 2005-го сервера. Если бы вы, прежде чем дискутировать, потрудились хоть немного узнать об индексах и их организации, то не выглядели бы идиотом в дискуссии. А на вопрос invm что произойдет на уровне физического хранения, когда данные добавляются в середину индекса? Вам всего-то нужно привести пример, в котором: а) строки индекса действительно хранятся в порядке ключа индекса и б) вставка строк в середину индекса этот порядок сохраняет. Элементарная задача, учитывая, что уже было показано как найти физическое положение строки. Но вы демонстрируете только слепую веру в хранение в порядке ключа индекса и игнорируете любые примеры, показывающие обратное. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 16:28 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, авторА на вопрос invm что произойдет на уровне физического хранения, когда данные добавляются в середину индекса? так вот же ? или снова что-то не дочитали, снова что-то пропустили, снова с чем-то поторопились ? 22055471 А вот и про вставку не по порядку 22051746 Читайте внимательно ))) А оскорбления и "Документация тоже ошибается или не приводится в соответствие с реальностью." это от отсутствия аргументов Тогда, с таким подходом ("Документация тоже ошибается или не приводится в соответствие с реальностью."), в природе не существует аргументов, которые могли бы Вас убедить, все можно подменить словами ))))) P.S. авторПункт б неактуален, начиная с 2005-го сервера.. Что об этом жалеть, ведь это могло быть и не правда авторДокументация тоже ошибается или не приводится в соответствие с реальностью. Главное не устарел https://docs.microsoft.com/en-us/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described?view=sql-server-ver15 ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 17:31 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypointА вот и про вставку не по порядкуЧтобы увидеть последствия расщепления страниц для индекса, в индексе должно быть как минимум две страницы, и расщеплять надо не последнюю. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 17:38 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, Вопросов нет )))))) Вы сделали за пять минут то, что мой оппонент не смог сделать за полторы недели P.S. в индексе должно быть как минимум две страницы, и расщеплять надо не последнюю Это что-то меняет в 22055601 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 17:51 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint, Да, меняет. Логически отсоритрованные данные могут находиться в страницах, расположенных в файле в беспорядке. После этого порядок данных, которые будет возвращать select без order by зависит от того, какой физический оператор доступа выберет оптимизатор, степени параллелизма и других факторов. И ровно в тот момент, когда оптимизатору захоется просканировать таблицу не по цепочке страниц, а по iam, или, скажем, впендюрить в запрос параллелизм, у вам начнутся спецэффекты. В общем, всегда, когда в плане у Scan-оператора стоит свойство ordered = false (и нет последующего оператора Sort), вы рано или поздно получите рандомно отсортированный набор. Особенно при мало-мальски значимых объемах. Для иллюстрации немного меняем ваш пример: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
и видим, что меньший по значению ключ располагается в большей по номеру странице: ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 18:01 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, Это не совсем мой пример, но Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Код: sql 1. 2. 3. 4. 5.
))) Почему так ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 18:05 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypointПочему так Я уже пояснил, почему. Потому что в данном случае сервер перебирает страницы по их логическому порядку, а не физическому. И нет нормальных способов заставить его сделать по-другому на такой маленькой таблице для такого простого запроса. Но поверьте, сервер умеет выбирать данные не только по логическому порядку страниц, но и по физическому. Специально для вас уже все украдено и описано: https://sqlperformance.com/2015/01/t-sql-queries/allocation-order-scans ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 18:10 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint, маразм крепчает :) Издевки бесполезны, они только больше подчеркивают ваш идиотизм :) Ваши бла-бла-бла и переливания из пустого в порожнее уже никому не интересны. Давай таки перейдем к конкретике: invm Вам всего-то нужно привести пример, в котором: а) строки индекса действительно хранятся в порядке ключа индекса и б) вставка строк в середину индекса этот порядок сохраняет. Элементарная задача, учитывая, что уже было показано как найти физическое положение строки. Но вы демонстрируете только слепую веру в хранение в порядке ключа индекса и игнорируете любые примеры, показывающие обратное. Что-то мне подсказывает, что ответа так и не будет... А ответы вида 22055471 , это все равно что "граф считает счета на своем счету" (с) Если не знаете - так и напишите. Но видимо гонор не позволяет :) Так уж и быть, дам намек - есть массив из 10 элементов. Нужно добавить 11-й элемент на позицию №2. Какой вид должен принять массив и что для этого нужно сделать? entrypoint Вы сделали за пять минут то, что мой оппонент не смог сделать за полторы недели Если пример вам непонятен, то это не означает, что он неверен. Это означает, что у вас недостаточно знаний для его понимания. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 18:50 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, Ясно, замечательная статья )))) А если в таблице нет индексов, если никаких B-TREE почему происходит так ? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 10:03 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Ну что такое, скатились до уровня Черкизовского рынка Здесь же форум профессионалов, на котором делятся знаниями, помогают советом и всё такое, в том числе указывают на чужие ошибки, конструктивно, без оскорблений, как и подобает Программисту с большой буквы )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 10:31 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint -- Что происходит здесь, почему нет индекса, а id в обратном порядке ? SELECT id FROM #t; Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 10:40 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Sergey Sizov, Вы получили такой результат ? А какой MSSQL, какие настройки ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 10:53 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint Sergey Sizov, Вы получили такой результат ? А какой MSSQL, какие настройки ?2017 express на виртуалке, все по дефолту. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 11:16 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Sergey Sizov, Интересно )))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 11:21 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint invm, Ну что такое, скатились до уровня Черкизовского рынка Здесь же форум профессионалов, на котором делятся знаниями, помогают советом и всё такое, в том числе указывают на чужие ошибки, конструктивно, без оскорблений, как и подобает Программисту с большой буквы )))) очередной Балабол с большой буквы, прости господи. неуч к тому же, а уж пафоса до усрачки. то invm: уж лучше Воронина пинать, он вменяемый ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 11:25 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Yasha123, Вы, вообще, с чем не согласны )))) Здесь же форум профессионалов, на котором делятся знаниями, помогают советом и всё такое, в том числе указывают на чужие ошибки, конструктивно, без оскорблений, как и подобает Программисту с большой буквы )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 11:31 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint, Ну что, опять издевками демонстрируете собственный идиотизм? Все что угодно, лишь бы не отвечать на неудобный вопрос? :) Впрос свелся к элементарному (из серии "третий класс, вторая четверть") invm есть массив из 10 элементов. Нужно добавить 11-й элемент на позицию №2. Какой вид должен принять массив и что для этого нужно сделать? Озвучив этот ответ и продолжив утверждать про упорядоченное хранение строк кластерного индекса, вы ставите под сомнение адекватность и профпригодность разработчиков SQL Server. Гораздо более вероятно, что неадекватны таки вы вместе с составителями документации. Согласно ваши же призывам entrypoint Код, только код критерий истины entrypoint Результат, критерий истины только результат, код в студию Код показывающий, что разработчики SQL Server все же вполне адекватны, был дан - 22052357 и 22055452 . Но был благополучно пригнорирован :) Так где же код, подтверждающий ваши утверждения и адекватность? Или теперь критерий истины только документация? Она как Священное писание - все, что в нем написано не должно никогда подвергаться сомнению? Боюсь, что данного кода мы так никогда и не увидим :) Подытоживая дискуссию - вы либо действительно неадекватны, либо просто придуриваетесь... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 11:45 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, неадекватны таки вы вместе с составителями документации. Кто-то стал отныне богом И простил себе грехи; Подытоживая дискуссию Да давайте уже закончим с Вами. Всё же ясно ? вы либо действительно неадекватны, либо просто придуриваетесь... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 11:54 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint Да давайте уже закончим с Вами. Всё же ясно ? вы либо действительно неадекватны, либо просто придуриваетесь... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 12:51 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint Человек загадка 22050667 Для начала наберитесь знаний, чтобы ответить на вопрос "Зачем сортировать строки источника при массовой вставке в кластерный индекс?" Подсказка - это напрямую связано с механизмом хранения данных в индексе, но никак не связано с упорядоченным хранением. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 13:52 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm entrypoint Человек загадка 22050667 Для начала наберитесь знаний, чтобы ответить на вопрос "Зачем сортировать строки источника при массовой вставке в кластерный индекс?" Подсказка - это напрямую связано с механизмом хранения данных в индексе, но никак не связано с упорядоченным хранением. Зачем ловить Так облажаться ещё нужно уметь )))) Спасибо за опыт авторЗдесь же форум профессионалов, на котором делятся знаниями, помогают советом и всё такое, в том числе указывают на чужие ошибки, конструктивно, без оскорблений, как и подобает Программисту с большой буквы )))) 22056271 P.S. автор"Зачем сортировать строки источника при массовой вставке в кластерный индекс?" У что же у нас такое особенное с кластерным индексом, что при вставке в него сортировать ничего не нужно, может потому что Код: sql 1.
https://docs.microsoft.com/ru-ru/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described?view=sql-server-ver15 22052270 Ах да, молчу ))) Мы же неадекватны таки вы вместе с составителями документации 22056289 P.S.S Теперь Вы за пять минут сделали то, что не могли сделать за полторы недели )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 14:07 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
nullin, 22051809 nullin Что же качается вашего order by newid(), то select без явного указания сортировки эквивалентен select ... order by (select null) - может сейчас наступит просветление? Не поможете, воспользовался Вашим советом, но он почему-то не работает, почему-то он не сортирует в случайном порядке как нужно, хотя Вы и пишете, что order by newid() = select ... order by (select null) Скрипт нужно выполнить несколько раз, чтобы получить нужный эффект Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Заранее благодарен ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 15:17 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint У что же у нас такое особенное с кластерным индексом, что при вставке в него сортировать ничего не нужно, может потому что Код: sql 1.
Изучайте: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68.
БДСожрано в ЖТБез сортировкиTestSortingOnInsert118249508Без сортировкиtempdb0 БДСожрано в ЖТС сортировкойTestSortingOnInsert61107580С сортировкойtempdb0 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 15:39 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Наслаждайтесь 22056482 Кстати может с 22056566 поможете, а то край как нужно ((( у меня вроде работает, но хочется по фэншую, как у взрослых ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 15:43 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Может к документации ? Вы используете NEWID() ( "функция NEWID вызывает непредсказуемый уровень нагрузки" ), которые генерирует непоследовательный uniqueidentifier и при вставке его в кластерный индекс много чего происходит для того, чтобы вставить его то в конец, то в начало, в середину. для того чтобы избежать такого поведения рекомендуется использовать функцию NEWSEQUENTIALID() ( "использование NEWSEQUENTIALID может ускорить работу по сравнению с использованием функции NEWID" ), которая авторСоздает идентификатор GUID, имеющий значение, большее любого идентификатора GUID, который был прежде создан на указанном компьютере при помощи этой функции с момента запуска Windows https://docs.microsoft.com/ru-ru/sql/t-sql/functions/newsequentialid-transact-sql?view=sql-server-ver15 Немного изменяем Ваш скрипт только на этом основании, не вникая в тонкости и сразу же получаем и прирост производительности и с памятью уже все не так плохо. И это только всего оптимизация в лоб, без погружения, просто, книжку прочитал и всё ((( Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68.
P.S. 22056596 Нет ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 16:23 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Уважаемый entrypoint, вы просили показать зачем может понадобится сортировка при массовой вставке в кластерный индекс? Просили. Было показано? Было. Что-то не устраивает? Ну так это уже ваши трудности. И не нужно переводить стрелки на документацию. Это и дальнейший поток мыслей не относится к заданному вопросу. entrypoint стати может с 22056566 поможете, а то край как нужно ((( у меня вроде работает, но хочется по фэншую, как у взрослых К тому же, включать телепатические способности, чтобы понять чего вы там пытаетесь изобразить и что для вас феншуй, лично мне просто лень. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 19:52 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint, вы действительно не поняли то, что я вам отвечал. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
dbfiddle Утверждение "order by newid() = select ... order by (select null)" ложно. Пожалуйста, приглядитесь внимательнее к моему сообщению и dbfiddle. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 21:29 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
nullin Утверждение "order by newid() = select ... order by (select null)" ложно. На всякий случай, поясню, Ваше утверждение о моих сказанных словах - ложное, и лучше вам это признать, чтобы не подвергать людей сомнению в вашей адекватности. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2020, 21:41 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Модератор: Я, пожалуй, прикрою. Пора прекращать этот вертеп. Уважаемый entrypoint, Учите матчасть. Жизнь сильно богаче, чем в вашей реальности переведенного роботом msdn. Если вы потрудитесь углубиться, вы даже поразитесь, насколько. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2020, 00:43 |
|
|
start [/forum/topic.php?all=1&fid=46&tid=1686665]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
122ms |
get tp. blocked users: |
2ms |
others: | 839ms |
total: | 1042ms |
0 / 0 |