|
Вопрос по синтаксису 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 |
|
|
start [/forum/topic.php?fid=46&msg=39910179&tid=1686665]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 332ms |
total: | 463ms |
0 / 0 |