Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Прошу помочь с вложенным запросом. Необходимо вывести клиентов и сумму их задолженности. Я это делаю так, но выдает ошибку " Вложенный запрос вернул больше одного значения. Это запрещено, когда вложенный запрос следует после =, !=, <, <=, >, >= или используется в качестве выражения." Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2017, 17:22 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Rismen, Код: sql 1. может, тут SUM(Pay) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2017, 17:30 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
xenix, нет, тогда выводит около 675 строк, а должен 3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2017, 17:33 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Rismen, авторогда выводит около 675 строк, а должен 3 допишите SELECT TOP 3 иначе не спасти. FROM Residency c, Payment b, Clients и потом опять JOIN Residency JOIN Payment на угад как-то так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2017, 17:40 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaK, всё равно не выводит, то что нужно. Могу скинуть саму базу данных https://drive.google.com/open?id=1TVcrxWEFqn7zERAubE7-3qoeV3eKyLwY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2017, 21:34 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaKна угад как-то так Как я понимаю, могут быть клиенты без единого платежа. Тогда уж так: Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2017, 23:19 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#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. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 11:10 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Руслан Дамирович Код: sql 1. Для чего в этой задаче CTE? Две временные таблицы неявно Вы создаете - это потеря производительности. А выигрыш в чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 11:19 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Ноль пропустил. Исправлено. Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 11:22 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Для чего в этой задаче CTE? Две временные таблицы неявно Вы создаете - это потеря производительности. А выигрыш в чем? Такое ощущение, что ты из PL/SQL пришёл. или из будущего, где MS SQL научился WITH материализовывать. ptr128Ноль пропустил. Исправлено. 2. Твой скрипт изначально некорректно считает, мелкими исправлениями ты его не улучшишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 11:27 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Руслан Дамировичptr128Для чего в этой задаче CTE? MS SQL научился WITH материализовывать.[/quot] Он от момента рождения CTE так и делал. Попробуйте прогнать CTE на большим объемом данных и понаблюдайте за Tempdb Руслан Дамирович2. Твой скрипт изначально некорректно считает, мелкими исправлениями ты его не улучшишь. А если не как в церкви, без догм? В чем претензии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 12:28 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Он от момента рождения CTE так и делал. Попробуйте прогнать CTE на большим объемом данных и понаблюдайте за Tempdb Шедевральное заблуждение. ptr128А если не как в церкви, без догм? Не получится, я верю только в чистый и понятный код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 12:37 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Руслан Дамировичptr128Он от момента рождения CTE так и делал. Попробуйте прогнать CTE на большим объемом данных и понаблюдайте за Tempdb Шедевральное заблуждение. Опять догма? Объекты CTE, табличных переменных, вложенных запросов и т.п. размещаются в tempdb. При этом, пока хватает оперативки, вся tempdb живет в in-memory OLTP. Когда же объем данных большой, то уходим на диск. Кстати, именно когда я обнаружил, что CTE - не более, чем "ситаксический сахар", но без возможности указания необходимых индексов для временных таблиц, я от него отказался. Уже на нескольких миллионах записей иерархии, глубиной всего в десяток уровней, разница в производительности стала заметна на глаз. ptr128А если не как в церкви, без догм? Не получится, я верю только в чистый и понятный код.[/quot] Это чей код Вы называете "чистым"? Откуда Вы вообще взяли, что в таблце Payment есть поле ClientID? У ТС таблица Payment связана только с Residency через ResidencyID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 12:50 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
[quot ptr128 Объекты CTE[/quot] Расскажи-ка нам подробнее, что за "объекты СТЕ". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 12:54 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Суммы будут не верно считаться, для PriceOfResidency Исправленная версия: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 12:59 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
CammomileРасскажи-ка нам подробнее, что за "объекты СТЕ". Почитайте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:04 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128, авторОбъекты CTE, табличных переменных, вложенных запросов и т.п. размещаются в tempdb. При этом, пока хватает оперативки, вся tempdb живет в in-memory OLTP. Когда же объем данных большой, то уходим на диск. как же таких sql то терпит.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:04 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaKptr128, авторОбъекты CTE, табличных переменных, вложенных запросов и т.п. размещаются в tempdb. При этом, пока хватает оперативки, вся tempdb живет в in-memory OLTP. Когда же объем данных большой, то уходим на диск. как же таких sql то терпит.... Самокритично ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:10 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Объекты CTE, табличных переменных, вложенных запросов и т.п. размещаются в tempdb.Ждем ссылку на документацию. Или, хотя бы, репро. ptr128При этом, пока хватает оперативки, вся tempdb живет в in-memory OLTPА когда in-memory OLTP еще не было? Опять же, ждем ссылку на документацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:10 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128, дарагуля и де там про жизнь в оперативке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:15 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
invmА когда in-memory OLTP еще не было? Опять же, ждем ссылку на документацию. Когда не было - непосредственно в tempdb. Ссылка выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:16 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaKptr128, дарагуля и де там про жизнь в оперативке? Деточка, а Вы не знали, что, пока достаточно оперативки, TempDB в ней и живет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:18 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128TaPaKptr128, дарагуля и де там про жизнь в оперативке? Деточка, а Вы не знали, что, пока достаточно оперативки, TempDB в ней и живет? нет, а ms об этом знает? может даже пишут где? ну и про это тоже автортабличных переменных, вложенных запросов и т.п. размещаются в tempdb. упоротые бараны больше всего веселят ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:20 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128CammomileРасскажи-ка нам подробнее, что за "объекты СТЕ". Почитайте Сам то справился ссылку свою прочитать? авторA r e essentially disposable VIEWs ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:29 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Ссылка выше.С каких пор stackexchange стал документацией? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:33 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaKptr128пропущено... Деточка, а Вы не знали, что, пока достаточно оперативки, TempDB в ней и живет? нет, а ms об этом знает? может даже пишут где? Естественно , не то что Вы. Цитирую: If memory is available, both table variables and temporary tables are created and processed while in memory (data cache). TaPaKавтортабличных переменных, вложенных запросов и т.п. размещаются в tempdb. упоротые бараны больше всего веселят Опять самокритично Цитирую: tempdb use: Table variables Queries that contain SELECT, INSERT, UPDATE, and DELETE statements can use internal objects to store intermediate results for hash joins, hash aggregates, or sorting. A common table expression can be thought of as a temporary result set that is defined within the execution scope of a single SELECT, INSERT, UPDATE, DELETE, or CREATE VIEW statement. When the query plan for a common table expression query uses a spool operator to save intermediate query results, the Database Engine creates a work table in tempdb to support this operation. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:34 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
invmptr128Ссылка выше.С каких пор stackexchange стал документацией? Не вопрос. Выше дал ссылки на MS. Так устроит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:35 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128TaPaKпропущено... нет, а ms об этом знает? может даже пишут где? Естественно , не то что Вы. Цитирую: If memory is available, both table variables and temporary tables are created and processed while in memory (data cache). TaPaKпропущено... упоротые бараны больше всего веселят Опять самокритично Цитирую: tempdb use: Table variables Queries that contain SELECT, INSERT, UPDATE, and DELETE statements can use internal objects to store intermediate results for hash joins, hash aggregates, or sorting. A common table expression can be thought of as a temporary result set that is defined within the execution scope of a single SELECT, INSERT, UPDATE, DELETE, or CREATE VIEW statement. When the query plan for a common table expression query uses a spool operator to save intermediate query results, the Database Engine creates a work table in tempdb to support this operation. я так понимаю вы не можете перевести то что написано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:38 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128 When the query plan for a common table expression query uses a spool operator to save intermediate query results, the Database Engine creates a work table in tempdb to support this operation. А ты серьезно не видишь разницы между "Объект СТЕ живет в ТемпДб" и " Движок сервера может скидывать в таблицу результаты промежуточных вычислений" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:42 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
фиг с ним, не осилил превеод это ладно, но где же там про автор TempDB в ней и живет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:43 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaKя так понимаю вы не можете перевести то что написано? Зачем??? В нашей сфере деятельности, человеку, не способному свободно читать технические английские тексты, делать вообще нечего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:44 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
авторЗачем??? В нашей сфере деятельности, человеку, не способному свободно читать технические английские тексты, делать вообще нечего а он прикольный, можно ещё пару таких на пятницу заказать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:45 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Cammomileptr128 When the query plan for a common table expression query uses a spool operator to save intermediate query results, the Database Engine creates a work table in tempdb to support this operation. А ты серьезно не видишь разницы между "Объект СТЕ живет в ТемпДб" и " Движок сервера может скидывать в таблицу результаты промежуточных вычислений" ? "Движок сервера умеет скидывать в таблицу результаты промежуточных вычислений" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:47 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaKфиг с ним, не осилил превеод это ладно, но где же там про автор TempDB в ней и живет If memory is available, both table variables and temporary tables are created and processed while in memory (data cache). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:48 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaKавторЗачем??? В нашей сфере деятельности, человеку, не способному свободно читать технические английские тексты, делать вообще нечего а он прикольный, можно ещё пару таких на пятницу заказать Интересно, тут есть вообще кто-то умеющий признавать свои ошибки? Или ЧСВ не позволяет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:49 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128TaPaKпропущено... а он прикольный, можно ещё пару таких на пятницу заказать Интересно, тут есть вообще кто-то умеющий признавать свои ошибки? Или ЧСВ не позволяет? начинай Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:52 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaKptr128пропущено... Интересно, тут есть вообще кто-то умеющий признавать свои ошибки? Или ЧСВ не позволяет? начинай Код: sql 1. 2. Что начинать? Код: sql 1. 2. 3. 4. На всякий случай sys.dm_db_task_space_usage [...] This view is applicable only to the tempdb database. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 14:05 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128, т.е. ты теперь доказываешь что всё в темпд и всё на диске? ну ладно, таких прикольных больше одного не надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 14:07 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaKptr128, т.е. ты теперь доказываешь что всё в темпд и всё на диске? ну ладно, таких прикольных больше одного не надо Вы тупой или притворяетесь? ptr128If memory is available, both table variables and temporary tables are created and processed while in memory (data cache). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 14:11 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Cammomileпропущено... А ты серьезно не видишь разницы между "Объект СТЕ живет в ТемпДб" и " Движок сервера может скидывать в таблицу результаты промежуточных вычислений" ? "Движок сервера умеет скидывать в таблицу результаты промежуточных вычислений"Жесть. Тут всем известно, что операторы движка сиквела могут использовать tempdb Например, при выполнении запроса: Код: sql 1. 2. 3. движок сиквела может использовать tempdb для сортировки. Но говорить из за этого, по вашей логике, что "объекты простых запросов хранятся в tempdb" так же абсурдно, как ваше "Объекты CTE, ..., вложенных запросов и т.п. размещаются в tempdb". "Объектов CTE и вложенных запросов" просто не существует как явления, так же как не существует "объекта простого select", так что и хранить их невозможно в принципе. ptr128Интересно, тут есть вообще кто-то умеющий признавать свои ошибки? Или ЧСВ не позволяет?Один из обсуждающих не умеет точно, а уж ЧСВ у него ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 14:16 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128TaPaKptr128, т.е. ты теперь доказываешь что всё в темпд и всё на диске? ну ладно, таких прикольных больше одного не надо Вы тупой или притворяетесь? ptr128If memory is available, both table variables and temporary tables are created and processed while in memory (data cache). тупой, рассказывайте: вы показали что меняется размер базы tempdb прям на диске, но при этом всё в памяти, я в отчаянии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 14:18 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128, *stack*.* и т.п. здесь авторитетным источником не считается. Для начала изучите, что же хранится в tempdb - https://docs.microsoft.com/en-us/sql/relational-databases/databases/tempdb-database Затем почитайте что такое Buffer Pool и чем tempdb в этом плане отличается от других БД. На закуску - https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/faster-temp-table-and-table-variable-by-using-memory-optimization ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 14:20 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
alexeyvg"Объектов CTE и вложенных запросов" просто не существует как явления Смысл придираться к словам? По смыслу и так ясно, что речь идет об "объектах создаваемых CTE" и "объектов создаваемых вложенными запросами" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 14:20 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
invmptr128, *stack*.* и т.п. здесь авторитетным источником не считается. Я уже понял и поэтому дал ссылку на MS. invmДля начала изучите, что же хранится в tempdb Вот именно почитайте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 14:23 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128, автор Вот именно почитайте тут есть уже один который даёт ссылки не читая, второго не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 14:26 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128alexeyvg"Объектов CTE и вложенных запросов" просто не существует как явления Смысл придираться к словам? По смыслу и так ясно, что речь идет об "объектах создаваемых CTE" и "объектов создаваемых вложенными запросами" О, а вот и режим "зачем объяснять итак понятно" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 14:27 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Cammomileptr128пропущено... Смысл придираться к словам? По смыслу и так ясно, что речь идет об "объектах создаваемых CTE" и "объектов создаваемых вложенными запросами" О, а вот и режим "зачем объяснять итак понятно" Извините, я не учел, что здесь не все владеют русским и в фразе "Объекты строительства" считают само строительство объектом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 14:31 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128invmptr128, *stack*.* и т.п. здесь авторитетным источником не считается. Я уже понял и поэтому дал ссылку на MS. invmДля начала изучите, что же хранится в tempdb Вот именно почитайте https://technet.microsoft.com/ru-ru/library/ms345368(v=sql.105).aspx - тут на Русском :) ...Обобщенные табличные выражения могут рассматриваться как временные результирующие наборы, определенные в области выполнения одиночных инструкций SELECT, INSERT, UPDATE, DELETE и CREATE VIEW. Когда в плане запроса для обобщенного табличного выражения для сохранения промежуточных результатов используется оператор буферизации, ядро СУБД создает рабочую таблицу в базе данных tempdb для поддержки этой операции..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 14:42 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Руслан Дамирович, ваш запрос не работает так как нужно. В бд в таблице Payment строка 7 в столбце Pay оплата указана не полная, 8 и 9 строка не оплачены. Если посмотреть в таблицу Residency, то в столбце PriceOfResidency указана полная стоимость. И нам нужен запрос, который бы вычислял эту разницу и выводил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 14:46 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Goga-Gola тут на Русском :) У MS, часто, очень не качественный перевод. Во многих местах даже машинный. И временами он исказажает смысл до противоположного. Поэтому стараюсь все читать все же в оригинале, по-английски. Чего и Вам желаю ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 14:48 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Rismenваш запрос не работает так как нужно Попробуйте мой последний вариант запроса: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 14:51 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Rismenваш запрос не работает так как нужно Попробуйте мой последний вариант запроса: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Выдает ошибку: Столбец "Residency.PriceOfResidency" недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 15:07 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
RismenВыдает ошибку Логично с его стороны ) Исправил Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 15:09 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Вот именно почитайте Ну и где там подтверждение вашего изречения "Объекты CTE, табличных переменных, вложенных запросов и т.п. размещаются в tempdb"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 15:15 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
invmptr128Вот именно почитайте Ну и где там подтверждение вашего изречения "Объекты CTE, табличных переменных, вложенных запросов и т.п. размещаются в tempdb"? О господи! Откройте ссылку и внимательно изучите содержимое таблицы после фразы "The following table lists the features in SQL Server that create user objects, internal objects, or row versions in tempdb." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 15:18 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128invmпропущено... Ну и где там подтверждение вашего изречения "Объекты CTE, табличных переменных, вложенных запросов и т.п. размещаются в tempdb"? О господи! Откройте ссылку и внимательно изучите содержимое таблицы после фразы "The following table lists the features in SQL Server that create user objects, internal objects, or row versions in tempdb." дарагуля, ты наверное хотел сказать изначально что ингода попадают в tempdb? только когда spool есть? А мы тут в ужасе что всегда cte/вложенные запросы в tepmdb падают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 15:28 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaKдарагуля, ты наверное хотел сказать изначально что ингода попадают в tempdb? Нет, детка, нет. Читайте внимательно. И цитируйте оттуда, если желаете возразить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 15:30 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128TaPaKдарагуля, ты наверное хотел сказать изначально что ингода попадают в tempdb? Нет, детка, нет. Читайте внимательно. И цитируйте оттуда, если желаете возразить. милочка, позвольте авторWhen the query plan for a common table expression query uses a spool operator to save intermediate query results, the Database Engine creates a work table in tempdb to support this operation. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 15:32 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaKptr128пропущено... Нет, детка, нет. Читайте внимательно. И цитируйте оттуда, если желаете возразить. милочка, позвольте авторWhen the query plan for a common table expression query uses a spool operator to save intermediate query results, the Database Engine creates a work table in tempdb to support this operation. Да, в этом случае tempdb используется еще и для этого. Кроме того, что написано было в этой же ячейке перед приведенной Вами фразой: "A common table expression can be thought of as a temporary result set that is defined within the execution scope of a single SELECT, INSERT, UPDATE, DELETE, or CREATE VIEW statement." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 15:50 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128TaPaKпропущено... милочка, позвольте пропущено... Да, в этом случае tempdb используется еще и для этого. Кроме того, что написано было в этой же ячейке перед приведенной Вами фразой: "A common table expression can be thought of as a temporary result set that is defined within the execution scope of a single SELECT, INSERT, UPDATE, DELETE, or CREATE VIEW statement." а как вы понимаете приведённую вам фразу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 15:53 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaKptr128пропущено... Да, в этом случае tempdb используется еще и для этого. Кроме того, что написано было в этой же ячейке перед приведенной Вами фразой: "A common table expression can be thought of as a temporary result set that is defined within the execution scope of a single SELECT, INSERT, UPDATE, DELETE, or CREATE VIEW statement." а как вы понимаете приведённую вам фразу? Была же выше ссылка. В лом открыть? "Обобщенные табличные выражения могут рассматриваться как временные результирующие наборы, определенные в области выполнения одиночных инструкций SELECT, INSERT, UPDATE, DELETE и CREATE VIEW. " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 16:03 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128TaPaKпропущено... а как вы понимаете приведённую вам фразу? Была же выше ссылка. В лом открыть? "Обобщенные табличные выражения могут рассматриваться как временные результирующие наборы, определенные в области выполнения одиночных инструкций SELECT, INSERT, UPDATE, DELETE и CREATE VIEW. " и это означает что cte в tempdb всегда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 16:05 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128О господи!Вот именно! Но и "рукалицо" тоже подойдет. Медитируйте над фразой "When the query plan for a common table expression query uses a spool operator to save intermediate query results, the Database Engine creates a work table in tempdb to support this operation." пока полностью не поймете смысл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 16:15 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
К чему этот спор? Кто-то надеется, что собеседник скажет - ну да, я был не прав? Гордыня так и прет. И невежество тоже... Остановитесь! /(С) Янукович/ :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 16:20 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaKptr128пропущено... Была же выше ссылка. В лом открыть? "Обобщенные табличные выражения могут рассматриваться как временные результирующие наборы, определенные в области выполнения одиночных инструкций SELECT, INSERT, UPDATE, DELETE и CREATE VIEW. " и это означает что cte в tempdb всегда? Ну раз эта фраза находится в колонке "tempdb use"... На самом деле, в частных случаях, когда план запроса не подразумевает хранения промежуточных результатов, могу предполагать, что объект для результирующих наборов данных CTE в tempdb остается пустым. Оптимизатор все же не настолько туп. Но достаточно только уйти в рекурсию, агрегацию или JOIN не во вложенном цикле, а через хеш, как данные туда посыпятся. К сожалению, информации о внутреннем устройстве MS SQL очень мало. Как я уже писал выше, от CTE я отказался, когда обнаружил, что он демонстрирует худшую производительность, по сравнению с явным использованием временных таблиц с разумно созданными индексами. А в тех случаях, когда можно обойтись без временных таблиц, он не очень то и нужен, так как легко заменяется вложенными запросами или вьюхами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 16:20 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Goga-GolaКто-то надеется, что собеседник скажет - ну да, я был не прав? Мне приходится говорить эту фразу регулярно. Даже на этом форуме я уже несколько раз признавал свою ошибку только за эту неделю. Как может быть всегда прав человек, который что-то делает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 16:22 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128, ptr128, авторНу раз эта фраза находится в колонке "tempdb use"... агонь! Код: sql 1. т.е. Код: sql 1. полезет в tempdb? авторА в тех случаях, когда можно обойтись без временных таблиц, он не очень то и нужен, так как легко заменяется вложенными запросами или вьюхами. cte заменяется вложенными запросами.... я не ем сахар, я заменяю его сахаром ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 16:32 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128RismenВыдает ошибку Исправил Теперь уже работает, но выдает не тех клиентов, которые нужны. Нужны последние три ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 16:38 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Rismenptr128пропущено... Исправил Теперь уже работает, но выдает не тех клиентов, которые нужны. Нужны последние три По какому признаку последние? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 16:40 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaKполезет в tempdb? Проверяйте сами. Вы уже потеряли в моих глазах всякое уважение. Поэтому не дождетесь, чтобы я ради Вас хоть пальцем пошевелил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 17:01 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128К сожалению, информации о внутреннем устройстве MS SQL очень мало.Информации полно. Видимо, вы просто не умеете искать. А если бы нашли и почитали, то не писали бы бред типаptr128На самом деле, в частных случаях, когда план запроса не подразумевает хранения промежуточных результатов, могу предполагать, что объект для результирующих наборов данных CTE в tempdb остается пустым. К вседению - statistics io покажет все объекты, включая Worktable/Workfile. У неиспользуемых будет 0 чтений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 17:14 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Rismenпропущено... Теперь уже работает, но выдает не тех клиентов, которые нужны. Нужны последние три По какому признаку последние? Если открыть бд, то в таблице Residency столбце PriceOfResidency полная стоимость за проживание. В таблице Payment столбце Pay сколько оплачено. И нужно вывести тех клиентов, которые либо не заплатили, либо оплатили частично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 17:21 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
invmК вседению - statistics io покажет все объекты, включая Worktable/Workfile. У неиспользуемых будет 0 чтений. Спасибо! Этого я не знал. Воспользуюсь в будущем ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 17:23 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Rismenptr128пропущено... По какому признаку последние? Если открыть бд, то в таблице Residency столбце PriceOfResidency полная стоимость за проживание. В таблице Payment столбце Pay сколько оплачено. И нужно вывести тех клиентов, которые либо не заплатили, либо оплатили частично. Я вижу, что клиенты 1,2,3 полностью оплатили. В запросе я, так как писал его без БД, неправильно указал имя поля. Вместо SUM(ISNULL(P.Payment,0)) должно быть SUM(ISNULL(P.Pay,0)) И запрос честно выдает оставшихся двух клиентов. Еще раз запрос, с исправленным именем поля: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 17:37 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. авторTable 'syssingleobjrefs'. Scan count 32, logical reads 96, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'syspalvalues'. Scan count 0, logical reads 32, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'syspalnames'. Scan count 0, logical reads 32, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'sysschobjs'. Scan count 1, logical reads 43, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Что-то я не вижу попыток заехать в тембдб. СТЕ есть, а "Объекта СТЕ" в тембдебе нету, миииистикааааа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 17:41 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
CammomileЧто-то я не вижу попыток заехать в тембдб. СТЕ есть, а "Объекта СТЕ" в тембдебе нету, миииистикааааа. Бы ли бы Вы хоть на йоту образованней, то использовали CTE в таком запросе, где его использование оправдано, а не пытались придумать настолько тупой запрос, который оптимизатор спокойно развернул без CTE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 18:19 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Ого, сначала у него " итак понятно что объект не объект , а данные для запроса". Теперь у него " итак понятно, что СТЕ не СТЕ". С таким балаболом мастером пера сложно вести предметный разговор... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 18:27 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
CammomileС таким балаболом мастером пера сложно вести предметный разговор... Самокритично Вы про себя ) Насколько Тапок есть флудер и дитя бескультурное, но даже он написал с CTE запрос, создающий и Worktable И Workfile ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 18:31 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128CammomileС таким балаболом мастером пера сложно вести предметный разговор... Самокритично Вы про себя ) Насколько Тапок есть флудер и дитя бескультурное, но даже он написал с CTE запрос, создающий и Worktable И Workfile ))) рыбка, тебе же уже сказали про 0 или уже забыла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 18:37 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaKрыбка, тебе же уже сказали про 0 или уже забыла? А Вам сказали, что если на автомобиле не ездить, то для него и топливо не нужно? Или про то, что если его толкать или тянуть буксиром, то можно ездить без топлива? Следует ли из этого, что автомобиль не использует топливо? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 18:44 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128который оптимизатор спокойно развернул без CTE.А можете привести пример запроса, который оптимизатор не "разворачивает без CTE". Или, хотя бы, какой-нибудь признак в плане выполнения по которому можно понять, что CTE не "развернут". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 19:11 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
invmptr128который оптимизатор спокойно развернул без CTE.А можете привести пример запроса, который оптимизатор не "разворачивает без CTE". Или, хотя бы, какой-нибудь признак в плане выполнения по которому можно понять, что CTE не "развернут". Так я же писал: ptr128Насколько Тапок есть флудер и дитя бескультурное, но даже он написал с CTE запрос, создающий и Worktable И Workfile ))) Вот его запрос: TaPaK Код: sql 1. И он честно выдает: Код: sql 1. 2. 3. Workfile и Worktable в tempdb созданы. Но из-за простоты запроса не понадобились. Если же использовать CTE "по назначению", то есть для рекурсивного запроса, взяв образец, например, из документации : Код: 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. То увидим уже активную работу с Worktable в tempdb: Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 19:24 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128, Так что есть признак "неразворачиваемости"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 21:04 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
invmptr128, Так что есть признак "неразворачиваемости"? Вам надо, Вы и исследуйте. Мне уже эта тема изрядно поднадоела. Если дети хотят использовать где ни попадя CTE - пусть используют. Тех, которые прийдут ко мне, сам переучу, продемонстрировав его ущербность на больших объемах данных. А остальные пусть работают на конкурентов ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 21:14 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Вам надо, Вы и исследуйте.Т.е. вы таки почти четыре страницы заливали о том, о чем сами ничего не знаете.ptr128Мне уже эта тема изрядно поднадоелаСамо собой. Так обычно случается, когда нечего ответить на вопросы и аргументы оппонентов.ptr128Тех, которые прийдут ко мне, сам переучу, продемонстрировав его ущербность на больших объемах данных.Только не берите тех, которые смогут раскусить вашу собственную ущербность в данном вопросе. Или въедливых, которые будут доставать вопросом "а почему?". Иначе изрядно поднадоест переучивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 22:16 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128alexeyvg"Объектов CTE и вложенных запросов" просто не существует как явления Смысл придираться к словам? По смыслу и так ясно, что речь идет об "объектах создаваемых CTE" и "объектов создаваемых вложенными запросами"Придираюсь? Тут все именно так трактуют ваши слова. Ещё раз спрошу: я не понимаю, почему в фразе "Объекты CTE, ..., вложенных запросов и т.п. размещаются в tempdb" вами не упомянуты обычные запросы из одной таблицы, даже без группировок? Фраза была бы вполне закончена: "Объекты CTE, всех запросов и т.п. размещаются в tempdb" И она бы по крайней мере хоть немножко бы соответствовала действительности, пусть с корявой формулировкой. Вложенные запросы, и их разновидность "CTE", не отличаются в этом смысле от каких либо других запросов. CTE и вложенные запросы не отличаются от оператора join. Для сервера нету никаких особых "CTE" и "вложенных запросов", нет операторов database engine для них, есть просто синтаксис "SQL", его семантика после синтаксического анализа преобразуется в операторы обработки множеств, потом оптимизатор из этого делает исполняемые операторы для database engine, он выполняет эти операторы, и если памяти маловато, то он использует для промежуточного хранения tempdb. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 22:35 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
invmТак обычно случается, когда нечего ответить на вопросы и аргументы оппонентов. Я не вижу вопросов и аргументов от Вас по интересующей меня теме. В упор. Вы очень захотели знать, по какому признаку можно узнать, использована будет tempdb при CTE запросе или нет. Каким образом это относится к моему утверждению мне совершенно не понятно. "Объекты CTE, табличных переменных, вложенных запросов и т.п. размещаются в tempdb." Я нигде не писал, что "всегда размещаются", или "обязательно размещаются". Я просто привел ссылки на MS, доказывающие мое утверждение. Мне совершенно не интересны частные случаи когда CTE не используют tempdb, из-за того, что такие случаи имеют нулевую практическую ценность. Вашу просьбу "А можете привести пример запроса, который оптимизатор не "разворачивает без CTE"." я удовлетворил. И что происходит даже на примитивном рекурсивном запросе с CTE - я Вам продемонстрировал. Вы и так уже признались, что были не в курсе того, что tempdb использует оперативную память, пока ее достаточно и то, что не знали, что CTE, табличные переменные и вложенные запросы размещают создаваемые ими внутренние объекты в tempdb. (Я перефразировал фразу "Объекты CTE, табличных переменных, вложенных запросов...", так как Вы признались, что у Вас проблемы с русским языком и Вы искренне считаете CTE, переменные и запросы внутренними объектами SQL) Короче, или по теме, или общайтесь сами с собой. Я Вам ничего не обязан. И обучать того, кто учиться не желает тоже не собираюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 22:36 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Если же использовать CTE "по назначению", то есть для рекурсивного запроса, взяв образец, например, изБоже, ну там же прямое указание использовать tempdb Выполните то же самое без CTE: Код: sql 1. 2. 3. 4. HASH - вот волшебное слово, а не CTE Уберите слово HASH из вашего запроса с CTE - и будет без worktable ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 22:53 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
[quot alexeyvg]ptr128пропущено... Смысл придираться к словам? По смыслу и так ясно, что речь идет об "объектах создаваемых CTE" и "объектов создаваемых вложенными запросами"Придираюсь? Тут все именно так трактуют ваши слова. Я уже извинился: ptr128Извините, я не учел, что здесь не все владеют русским и в фразе "Объекты строительства" считают само строительство объектом. alexeyvgЕщё раз спрошу: я не понимаю, почему в фразе "Объекты CTE, ..., вложенных запросов и т.п. размещаются в tempdb" вами не упомянуты обычные запросы из одной таблицы, даже без группировок? Во-первых, приведите доказательство того, что "обычный запрос из одной таблицы [...] без группировок" размещает внутренний объект в tempdb. И без сортировки, пожалуйста ) Во-вторых, там еще очень много что не упомянуто: курсоры, почта, события, индексы, версионирование строк, триггеры и т.п. Совершенно не вижу смысла перечислять все. Речь была вообще то исключительно о том, что CTE создает объекты в tempdb. Остальное просто к слову пришлось ) alexeyvgФраза была бы вполне закончена: "Объекты CTE, всех запросов и т.п. размещаются в tempdb" Ну а как же курсоры, индексы и версионирования строк? ))) Еще раз, речь шла именно о CTE. Кстати, что интересно, вложенные запросы только Вас возбудили. Хотите извинюсь? Они ведь тоже не всегда порождают что-то в tempdb. Но уж если создают объект - размещают его именно там. ))) alexeyvgВложенные запросы, и их разновидность "CTE", не отличаются в этом смысле от каких либо других запросов. CTE и вложенные запросы не отличаются от оператора join. Увы, и те, и другие, различаются, причем очень существенно. А именно тем, что не предоставляют возможность создать по результату их выполнения необходимых индексов. alexeyvgон выполняет эти операторы, и если памяти маловато, то он использует для промежуточного хранения tempdb. Наоборот, я уже приводил цитату и ссылку: "If memory is available, both table variables and temporary tables are created and processed while in memory (data cache)." Но даже это не так уж важно. Для меня важно то, что для временных таблиц я легко могу создать необходимые мне индексы, а для CTE, табличных переменных и подзапросов - нет. И именно поэтому на больших объемах данных эти механизмы проигрывают в производительности старым добрым временным таблицам. Которые, к тому же, можно размещать, при большом желании, in-memory. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 22:54 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
alexeyvgБоже, ну там же прямое указание использовать tempdb Уберите слово HASH из вашего запроса с CTE - и будет без worktable Это не мой запрос. И вы пропустили развитие тему. Там как раз явно было сказано, что HASH JOIN точно создаст объект в tempdb. ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 22:56 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128alexeyvgБоже, ну там же прямое указание использовать tempdb Уберите слово HASH из вашего запроса с CTE - и будет без worktable Это не мой запрос. И вы пропустили развитие тему. Там как раз явно было сказано, что HASH JOIN точно создаст объект в tempdb. )))Ваш - я имел в виду тот запрос, который вы привели. Может, я что то пропустил, я просто смотрю на эти фразы: ptr128Он от момента рождения CTE так и делал. Попробуйте прогнать CTE на большим объемом данных и понаблюдайте за Tempdbиptr128Объекты CTE, табличных переменных, вложенных запросов и т.п. размещаются в tempdb. и конкретный пример с статистикой и HASH. И сравниваем с цитируемой фразой: ptr128can use internal objects to store intermediate results for hash joins, hash aggregates, or sorting. В которой тоже не говорится, что CTE и вложенные запросы - объекты, хранимые в tempdb, а всего лишь то, что выполнение этого может потребовать использовать tempdb Согласитесь уже, что реальность, а так же цитируемые источники имеют совершенно противоположный смысл вашим утверждениям. Ещё раз, сравните: - " Объекты CTE, табличных переменных, вложенных запросов и т.п. размещаются в tempdb" и - " некоторые операторы database engine, например, hash joins, hash aggregates, или sorting, могут использовать tempdb" Тут собрались люди, достаточно хорошо знающие сиквел, почитывающие блоги писателей ядра сиквела, и даже заходят те, кто сами пишет об этом книги, и им режет взгляд такая вольная интерпретация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 23:11 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Вы очень захотели знать, по какому признаку можно узнать, использована будет tempdb при CTE запросе или нет.Читайте внимательно вопрос и не пытайтесь уйти в сторону - меня интересует признак "нераскрываемости" CTE. Т.е., признак того, что результат CTE где-то материализуется. ptr128Каким образом это относится к моему утверждению мне совершенно не понятно. "Объекты CTE, табличных переменных, вложенных запросов и т.п. размещаются в tempdb."Из всего перечисленного к объектам относятся только табличные переменные. Остальное - ваши фантазии.ptr128Я нигде не писал, что "всегда размещаются", или "обязательно размещаются".Серьезно? А тут - 21051012 , 21051358 ?ptr128Мне совершенно не интересны частные случаи когда CTE не используют tempdb, из-за того, что такие случаи имеют нулевую практическую ценность.Не расписывайтесь за всех. ptr128Вашу просьбу "А можете привести пример запроса, который оптимизатор не "разворачивает без CTE"." я удовлетворил.Где? Пока только словоблудие и попытки уйти от ответов на конкретные вопросы.ptr128Вы и так уже признались, что были не в курсе того, что tempdb использует оперативную память, пока ее достаточно и то, что не знали, что CTE, табличные переменные и вложенные запросы размещают создаваемые ими внутренние объекты в tempdb. (Я перефразировал фразу "Объекты CTE, табличных переменных, вложенных запросов...", так как Вы признались, что у Вас проблемы с русским языком и Вы искренне считаете CTE, переменные и запросы внутренними объектами SQL)Да-да. И это мы еще не перешли к вопросу про житиё tempdb в in-memory OLTP. Там моя вопиющая безграмотность проявится еще ярче... И особенно интересно узнать, где свои "внутренние объекты" размещают "невложенные" запросы? Наверное в секретном месте...ptr128Короче, или по теме, или общайтесь сами с собой.Клиент слился... Почему-то неудивительно.ptr128И обучать того, кто учиться не желает тоже не собираюсь.Прежде чем кого-то обучать, неплохо самому изучить предмет преподавания. А вы даже общепринятой терминологией не владеете. Так что обучателем премудростям CTE вам не стать, увы. ЗЫ: Не пытайтесь сохранить лицо, неся полнейший бред. Эффект ровно противоположный - выглядете еще большим идиотом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 23:11 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
invmменя интересует [...] признак того, что результат CTE где-то материализуется. Ну и интересуйтесь. Я тут при чем? Мне достаточно того, что объект, создаваемый CTE "материализуется" в иерархическом запросе, что я, кстати, доказал. Код: sql 1. 2. invmptr128"Объекты CTE, табличных переменных, вложенных запросов и т.п. размещаются в tempdb." Из всего перечисленного к объектам относятся только табличные переменные. Я в шоке! То есть Вы и вправду относитесь к тем, кто ptr128"в фразе "Объекты строительства" считают само строительство объектом." invmptr128Я нигде не писал, что "всегда размещаются", или "обязательно размещаются".Серьезно? А тут - 21051012 , 21051358 ? У Вас галлюцинации? Найдите там слова "всегда" или "обязательно". Можно с трех попыток ))) invmptr128Мне совершенно не интересны частные случаи когда CTE не используют tempdb, из-за того, что такие случаи имеют нулевую практическую ценность.Не расписывайтесь за всех. Выделите, пожалуста, в моей фразе слово "всех" ))) invmptr128Вашу просьбу "А можете привести пример запроса, который оптимизатор не "разворачивает без CTE"." я удовлетворил.Где? Глаза протрите! Второй запрос в посте 21053346 после фразы "Если же использовать CTE "по назначению"..." invmПока только словоблудие Вот уж точно вы про себя ))) invmи попытки уйти от ответов на конкретные вопросы. Извините, но если среди Вашего "словоблудия" и был конкретный вопрос, то я его пропустил. Пожалуйста, повторите его. Если он будт по теме - я на него отвечу. Но именно вопрос, а не просьба провести какие-то эксперименты или обучить Вас различать CTE запросы, создающие временные объекты в tempdb, от тех, которые такие запросы не создают. invmк вопросу про житиё tempdb в in-memory OLTP. Вот тут я соглашусь что погорячился и был не прав. MS под словосочетанием "in-memory OLTP" сейчас понимает совершенно отдельную компоненту внутри SQL сервера, несмотря на то, что ранее средства кеширования в памяти tempdb он тем же самым словосочетанием называл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 23:58 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
alexeyvgptr128Это не мой запрос.)))Ваш - я имел в виду тот запрос, который вы привели. Выделите, пожалуйста, в нем слово HASH: Код: 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. alexeyvgМожет, я что то пропустил, я просто смотрю на эти фразы: ptr128Он от момента рождения CTE так и делал. Попробуйте прогнать CTE на большим объемом данных и понаблюдайте за Tempdbиptr128Объекты CTE, табличных переменных, вложенных запросов и т.п. размещаются в tempdb. Явно пропустили. Где тут сказано, что всегда или обязательно ? Да, внутренние объекты SQL сервера, создаваемые при использовании CTE "размещал" и "размещаются" в tempdb. Если CTE, вложенные запросы и т.п. объектов не создают, то и размещать нечего. Или Вы опять будете требовать от меня извинений за то, что считаете "строительство" объектом? Ну пожалуйтта, ну проститете! ))) alexeyvgptr128can use internal objects to store intermediate results for hash joins, hash aggregates, or sorting. В которой тоже не говорится, что CTE и вложенные запросы - объекты, хранимые в tempdb, а всего лишь то, что выполнение этого может потребовать использовать tempdb Во-первых, в оригинале эта фраза звучала, как ptr128Queries that contain SELECT, INSERT, UPDATE, and DELETE statements can use internal objects to store intermediate results for hash joins, hash aggregates, or sorting. Даже слова CTE в ней не было. Потому что она совсем из другой строки таблицы по ссылке. Во-вторых, действительно, не любой запрос, содержащий "SELECT, INSERT, UPDATE, and DELETE" будет создавать "internal objects" и хранить их в tempdb. Для этого, у него, как минимум, должна возникнуть необходимость такой объект создать. А одно из необходимых (но не достаточное!) условий, для того, чтобы такой объект создался, как раз и есть "вложенный запрос". К которому цитата и относилась. 21051662 alexeyvgТут собрались люди, достаточно хорошо знающие сиквел, почитывающие блоги писателей ядра сиквела, и даже заходят те, кто сами пишет об этом книги, и им режет взгляд такая вольная интерпретация. О господи! А уже подумал, что Вы хоть что-то понимаете в обсуждаемом вопросе. А Вы вдруг, как дите малое решили пиписьками меряться ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 00:17 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Модератор: Уважаемый ptr128! Не могли бы вы к вашим оппонентам чуть-чуть с большим уважением относиться? Ну, чтобы профилактические баны не пришлось выписывать. Спасибо за понимание. Модератор: UPD: в этой теме это качается не только лишь некоторых. Давайте жить дружно, все дела. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 01:03 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
alexeyvgТут собрались люди, достаточно хорошо знающие сиквел, почитывающие блоги писателей ядра сиквела, и даже заходят те, кто сами пишет об этом книги, и им режет взгляд такая вольная интерпретация. Приношу публично извинения за "пиписьками меряться". Вы меня не оскорбляли, в отличии от некоторых. Поэтому считаю, что я явно погорячился. Но мериться регалиями с незнакомыми людьми, право, не стоит. Так же считаю эту тему закрытой. Несмотря на обилие постов, почему-то, почти никто кроме меня не приводил никаких доказательств своих утверждений, что загадило тему флудом и догматизмом. Все, что я хотел донести, так это то, что при использовании CTE, табличных переменных и вложенных запросов, MS SQL не предоставляет возможности индексации результирующего набора данных. Что может привести (на больших объемах данных и сложных запросах) к худшей производительности, чем при явном использовании временных таблиц с разумно созданными индексами. Если кто-то с этим не согласен - мне, по большому счету, безразлично. Жаль только тех, кто почитав весь этот прессинг на меня решит, что CTE, табличные переменные и вложенные запросы можно смело использовать на терабайтных БД и миллиардах записей. Желающие могут дальше придираться к словам, стилическим и синтаксическим ошибкам и даже к конкретным буквам ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 02:25 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Все, что я хотел донести, так это то, что при использовании CTE, табличных переменных и вложенных запросов, MS SQL не предоставляет возможности индексации результирующего набора данных.Табличные переменные индексировать можно: Код: sql 1. В зависимости от версии сиквела и поведения оптимизатора, такая добавка может очень сильно улучшить ситуацию. Ваша проблема в том, что вы, со своими терабайтными объемами, зачем-то пришли в раздел форума, в котором, если явно не сказано иное, по умолчанию подразумевается OLTP-нагрузка. Т.е. точечные запросы. Вы уже второй олапер, за последнее время, кто приходит сюда и начинает мудро вещать, основываясь на своих умолчаниях. Именно этим обусловлена такая реакция профессионалов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 06:09 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Ennor TiegaelТабличные переменные индексировать можно:[src] declare @t table (Id int primary key); Простите, у меня язык не повернулся назвать это возможностью индексирования. Это все же, скорее, ограничение (constraint). Да, это частный случай индексирования, но его возможности настолько уступают возможностям CREATE INDEX, что, лично для меня, этого уже достаточно для того, чтобы отказаться от использования табличных переменных. Благо временной таблицей их заменить можно всегда. Ennor TiegaelИменно этим обусловлена такая реакция профессионалов. И это Вы называете "реакцией профессионалов"? ))) TaPaKкак же таких sql то терпит.... дарагуля и де там про жизнь в оперативке? упоротые бараны больше всего веселят ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 09:03 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128, авторБлаго временной таблицей их заменить можно всегда. дарагуля, давай пример замены в функции? Или как всегда скажешь, что не то имел ввиду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 09:08 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
TaPaKptr128, авторБлаго временной таблицей их заменить можно всегда. дарагуля, давай пример замены в функции? Или как всегда скажешь, что не то имел ввиду? Детка, давай пример, опровергающий мое утверждение, или умолкни ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 09:13 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128TaPaKptr128, пропущено... дарагуля, давай пример замены в функции? Или как всегда скажешь, что не то имел ввиду? Детка, давай пример, опровергающий мое утверждение, или умолкни ))) рыбка, я ж и говорю что ты опять несёшь чушь, что тут опровергать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 09:17 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Явно пропустили. Где тут сказано, что всегда или обязательно ? Да, внутренние объекты SQL сервера, создаваемые при использовании CTE "размещал" и "размещаются" в tempdb. Если CTE, вложенные запросы и т.п. объектов не создают, то и размещать нечего.Опять "создаваемые при использовании CTE" :-) Я вам в очередной раз скажу, что написание или ненаписание волшебного слова CTE совершенно не коррелирует с использованием сервером tempdb. Мы же вроде это уже выяснили? ptr128Во-первых, в оригинале эта фраза звучала, как ptr128Queries that contain SELECT, INSERT, UPDATE, and DELETE statements can use internal objects to store intermediate results for hash joins, hash aggregates, or sorting. Даже слова CTE в ней не было.Вот именно, не было. Мы же обсуждаем ваши "объекты в tempdb, создаваемые запросом CTE", а не что то другое. ptr128alexeyvgТут собрались люди, достаточно хорошо знающие сиквел, почитывающие блоги писателей ядра сиквела, и даже заходят те, кто сами пишет об этом книги, и им режет взгляд такая вольная интерпретация. О господи! А уже подумал, что Вы хоть что-то понимаете в обсуждаемом вопросе. А Вы вдруг, как дите малое решили пиписьками меряться )))Ну, "разбираются, читают, пишут", это не только мерянье, но некий показатель знания контекста. Просто смешно выглядит, мы тут перетираем с 2000 года работу сервера с tempdb в самых разных ситуациях, в разных версиях, чуть ли не раз в неделю (ну хорошо, раз в месяц). Представляете, 17 лет постоянно обсуждаем, аж в зубах скрипят эти объекты в tempdb. Я уже отвечаю на эти темы не сразу, надоело, 10 лет назад бы подхватил топик в течении 5 минут. И тут приходит ptr128, и выдаёт такое :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 09:19 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
[quot alexeyvg]ptr128И тут приходит ptr128, и выдаёт такое :-) И "мэтры" начинают изъясняться языком школьников-дегенератов... "Дом-2" устроили... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 09:35 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
alexeyvgПросто смешно выглядит, мы тут перетираем с 2000 года А мне еще смешнее, так как я с удовольствием перешел с IDMS на DB/2 в 1989-ом, а свой первый интерпретатор SQL, естественно упрощенный, написал на C в 1995-ом. ))) Поймите, после того, как Вы начали говорить за всех (в курсе, что за всех говорят только демагоги?): alexeyvgТут всем известно все именно так отказались аргументировать свои утверждения: ptr128приведите доказательство того, что "обычный запрос из одной таблицы [...] без группировок" размещает внутренний объект в tempdb. И без сортировки, пожалуйста ) Выделите, пожалуйста, в нем слово HASH: Где тут сказано, что всегда или обязательно? смысла в продолжении общения просто нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 09:42 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Goga-GolaalexeyvgИ тут приходит ptr128, и выдаёт такое :-) И "мэтры" начинают изъясняться языком школьников-дегенератов... "Дом-2" устроили...Все "мэтры" вдруг поменяли язык? Или один-два человека ляпнули? В этом топике хватает и нормального обсуждения. "Дом-2" от кого то невоспитанного не отменяет "И тут приходит ptr128, и выдаёт такое :-)" Ой, ну вот, второй пост ptr128 в этом топике: ptr128Руслан Дамирович Код: sql 1. Для чего в этой задаче CTE? Две временные таблицы неявно Вы создаете - это потеря производительности. А выигрыш в чем?Конечно же, это ещё какой перл, противоречащий всем последующим объяснениям, цитатам и тестам. Всех резануло это высказывание, по сути - "ключевое слово WITH автоматически созадёт временную таблицу на каждое написание". И главное, не факт ошибки (у меня на форуме горы ошибок), а упорное отстаивание явного ляпа. Надо было просто сказать: ой, ошибся, не так понял прочитанную статью, не CTE неявно создаёт временные таблицы, а определённые операторы исполнения в database engine. И всё, сразу видно - человек знает, что мало знает, значит, профессионал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 09:52 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Поймите, после того, как Вы начали говорить за всех (в курсе, что за всех говорят только демагоги?): alexeyvgТут всем известно все именно так отказались аргументировать свои утверждения: ptr128приведите доказательство того, что "обычный запрос из одной таблицы [...] без группировок" размещает внутренний объект в tempdb. И без сортировки, пожалуйста ) Выделите, пожалуйста, в нем слово HASH: Где тут сказано, что всегда или обязательно?Ээээ, про слово HASH бездоказательно??? Вот 2 запроса с worktable Код: sql 1. 2. 3. 4. 5. 6. Вот 2 запроса без worktable Код: sql 1. 2. 3. 4. 5. 6. Теперь перечитываем утверждение, которое вы отстаиваете: ptr128Для чего в этой задаче CTE? Две временные таблицы неявно Вы создаете - это потеря производительности. А выигрыш в чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 09:57 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
alexeyvgТеперь перечитываем утверждение, которое вы отстаиваете: ptr128Для чего в этой задаче CTE? Две временные таблицы неявно Вы создаете - это потеря производительности. А выигрыш в чем?Ещё раз, мы обсуждаем именно это ваше утверждение. Придёт какой то начинающий сиквелист, прочитает мнение эксперта ptr128, потом посмотрит на свой код. - Таак, у меня тут 3 слова CTE, значит, создаются 3 (или 6?) временных таблиц в tempdb А это не так, наличие или отсутствие CTE никак не коррелдирует с временными объектами, оно зависит от плана выполнения запроса. Вот это мы тут говорим, и именно подтверждение или опровержение этого мы ищем в предоставленных вами ссылках, и ничто другое, никакие другие условия или признаки создания временных объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 10:05 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Жара, мать иё! А задача ТСа так и не решена! Клиенты не платят - бизнес страдает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 10:13 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Для чего в этой задаче CTE? Две временные таблицы неявно Вы создаете - это потеря производительности. А выигрыш в чем? Я могу согласиться с тем, что фраза была высказана излишне категорично. К тому же уже доказано было выше, что использование синтаксиса CTE не всегда приводит к созданию временных таблиц. Ну или, как Вы выражаетесь, "не всегда приводит к тому, что определенные операторы исполнения в database engine создают временные таблицы". Был не прав. Привык гонять своих разработчиков кратко. Благо живых примеров такого кода на продуктивных базах клиентов, хоть завались, и продемонстрировать разницу - минута. Надо было сразу писать что-то вроде "Написание запросов при помощи CTE может привести (а при разработке и развитии продукта - точно приведет) к неявному созданию неиндексированных объектов в tempdb, что приведет к потере производительности, по сравнению с использованием временных таблиц с разумными индексами". Или не писать вообще - пусть у конкурентов все работает медленней ) alexeyvg"ключевое слово WITH автоматически созадёт временную таблицу на каждое написание". А вот когда слова оппонетна перефразируют по своему разумению - это называется "демагогия". alexeyvgне CTE неявно создаёт временные таблицы, а определённые операторы исполнения в database engine. Вы видите принципиальную разницу между фразами? "Объекты CTE размещаются в tempdb" "Объекты создаваемые CTE размещаются в tempdb" "Объекты создаваемые при использоании синтаксиса CTE размещаются в tempdb" "Объекты создаваемые операторами database engine при использоании синтаксиса CTE размещаются в tempdb" Лично я не вижу. Поэтому, если бы Вы попросили уточнить мою фразу, так как она Вам непонятна, то сразу же получили бы последний вариант. Вы же предпочли придраться к словам и интерпретировать мою фразу исключительно одним способом, удобным для Вас. Даже не смотря на то, что и Вы и я в курсе, что CTE - не более чем синтаксическая конструкция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 10:22 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
alexeyvgЭэээ, про слово HASH бездоказательно??? Вот 2 запроса с worktable Убедительная просьба прекратить нагло врать! Скриншот сюда. Чтобы было видно, что это я написал, а не отковотил то, что написал кто-то другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 10:24 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Руслан ДамировичЖара, мать иё! А задача ТСа так и не решена! Клиенты не платят - бизнес страдает! После поста 21053000 он молчит. Видимо, все получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 10:28 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128alexeyvg"ключевое слово WITH автоматически созадёт временную таблицу на каждое написание". А вот когда слова оппонетна перефразируют по своему разумению - это называется "демагогия".Да, это очень доказательно, назвать "демагогией" :-) Моя интерпретация вашей фразы ровно такая же, как интерпретация любого другого человека. Её нельзя понять по другому. Ауууу, кто то понял фразу по другому, отзовитесь!!! ptr128alexeyvgне CTE неявно создаёт временные таблицы, а определённые операторы исполнения в database engine. Вы видите принципиальную разницу между фразами? "Объекты CTE размещаются в tempdb" "Объекты создаваемые CTE размещаются в tempdb" "Объекты создаваемые при использоании синтаксиса CTE размещаются в tempdb" "Объекты создаваемые операторами database engine при использоании синтаксиса CTE размещаются в tempdb" Лично я не вижу. Поэтому, если бы Вы попросили уточнить мою фразу, так как она Вам непонятна, то сразу же получили бы последний вариант. Вы же предпочли придраться к словам и интерпретировать мою фразу исключительно одним способом, удобным для Вас. Даже не смотря на то, что и Вы и я в курсе, что CTE - не более чем синтаксическая конструкция.Я не вижу разницы. Это совершенно идентичные неверные высказывания. Тут просто слово CTE лишнее. Она заставит прочитавшего человека искать CTE (слово WITH), что бы убрать оверхед по созданию временных таблиц. А это неправильно, искать нужно по другим признакам, а не по "WITH" Да вы прямо про это пишите, процитирую в сотый раз: ptr128Для чего в этой задаче CTE? Две временные таблицы неявно Вы создаете - это потеря производительности. А выигрыш в чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 10:43 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Надо было сразу писать что-то вроде "Написание запросов при помощи CTE может привести (а при разработке и развитии продукта - точно приведет) к неявному созданию неиндексированных объектов в tempdb, что приведет к потере производительности, по сравнению с использованием временных таблиц с разумными индексами"Жесть, но это же не связано, мы это уже обсуждаем очень долго :-) Переписывание "без CTE" сделает абсолютно идентичный план запроса, с использованием worktable или без использования - вот прямо как было, так и останется. ptr128Привык гонять своих разработчиков краткоБедолаги :-) Пыхтят, убирают CTE, потому что начальнику не нравится, но картинка с планом остаётся абсолютно такая же :-) Самодур :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 10:47 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128 "Объекты CTE размещаются в tempdb" "Объекты создаваемые CTE размещаются в tempdb" "Объекты создаваемые при использоании синтаксиса CTE размещаются в tempdb" "Объекты создаваемые операторами database engine при использоании синтаксиса CTE размещаются в tempdb" Лично я не вижу. Яб согласился слышать такое от гуманитария, но для человека, который делает заявку на то, что он профессиональный программист - это вопиющая безграмотность. Я могу только удивляться тому, что на таком уровне восприятия реальности у тебя есть какие-то там "твои программисты" Но займемся семантикой. Сиречь значением слов. автор"Объекты CTE размещаются в tempdb" : {СТЕ является типом объектов. Когда создается объект типа СТЕ, его метаданные и данные всегда размещаются в tempdb} автор"Объекты создаваемые CTE размещаются в tempdb" : {Мы не знаем , является ли СТЕ "типом" в обычно понимании, но очевидно, что СТЕ это некий механизма, который может породить создание каких-то объектов. При каких-то условиях, эти объекты могут размещаться в tempdb } автор"Объекты создаваемые при использоании синтаксиса CTE размещаются в tempdb":{ СТЕ это некая форма записи когда , которая приводит к созданию объектов , которые всегда размещаются в tempdb } автор"Объекты создаваемые операторами database engine при использоании синтаксиса CTE размещаются в tempdb" Ну тут смысл аналогичен предыдущему. Итак, что мы видим? Что поциент а) не видит разницы в принципиально разных высказываниях б) каждое их этих высказываний ложное, потому, что: 1 - СТЕ не является типом, для СТЕ нет экземпляров, соответственно нельзя разместить в темпдб то, чего нет; 2 - СТЕ не создает объектов, объекты создает движок бд, и размещает их в тембдб когда считает нужным; 3 - объекты, которые были созданы при использовании синтаксиса СТЕ не всегда размещаются в темпбд; 4 - объекты, которые были созданы при использовании синтаксиса СТЕ не всегда размещаются в темпбд. В общем, поздравляем вас соврамши, гражданин "я-писал-интерпретатор-пока-вы-в-ясли-ходили" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 10:48 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Cammomile : {Мы не знаем , является ли СТЕ "типом" в обычно понимании, но очевидно, что СТЕ это некий механизма, который может породить создание каких-то объектов. При каких-то условиях, эти объекты могут размещаться в tempdb } Поменять на : {Мы не знаем , является ли СТЕ "типом" в обычно понимании, но очевидно, что СТЕ это некий механизма, который может породить создание каких-то объектов. Эти объекты всегда размещаются в tempdb } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 10:53 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
alexeyvgно картинка с планом остаётся абсолютно такая же ptr128по сравнению с использованием временных таблиц с разумными индексами" Вы действительно утверждаете, что план запроса не зависит от индексов???? Занавес... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 10:57 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128alexeyvgно картинка с планом остаётся абсолютно такая же ptr128по сравнению с использованием временных таблиц с разумными индексами" Вы действительно утверждаете, что план запроса не зависит от индексов???? Занавес...Жесть. Я обсуждаю ваше высказывание про CTE, при чём тут индексы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 11:02 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
CammomileНо займемся семантикой. Сиречь значением слов. Cammomileслышать такое от гуманитария Но тогда почему Вы сами рассуждаете, как гуманитарий? Я действительно не расчитывал, что мою фразу будет читать гуманитарий, да еще и не знающий, ptrчто CTE - не более чем синтаксическая конструкция. CammomileСТЕ является типом объектов А в фразе "объекты строительства, транспорта и благоустройства" строительство, транспорт и благоустройство тоже является, по Вашему, типом объектов? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 11:04 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
alexeyvgptr128Вы действительно утверждаете, что план запроса не зависит от индексов???? Занавес...Жесть. Я обсуждаю ваше высказывание про CTE, при чём тут индексы? Я уже говорил неоднократно. ptr128при использовании CTE, табличных переменных и вложенных запросов, MS SQL не предоставляет возможности индексации результирующего набора данных. Что может привести (на больших объемах данных и сложных запросах) к худшей производительности, чем при явном использовании временных таблиц с разумно созданными индексами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 11:07 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
alexeyvgptr128Надо было сразу писать что-то вроде "Написание запросов при помощи CTE может привести (а при разработке и развитии продукта - точно приведет) к неявному созданию неиндексированных объектов в tempdb, что приведет к потере производительности, по сравнению с использованием временных таблиц с разумными индексами"Жесть, но это же не связано Что это и с чем не связано? Или мне, последовать Вашему примеру и самому придумать, что таоке "это" и с "чем" оно не связано. Ну, например, Ваша лживость (где скриншот?) и акоголизм ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 11:26 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Господа, Сергей Алексеевич уже попросил быть более сдержанными. Вы уже 5 страниц толчёте воду в ступе. Пользы от топика =0,01% с учетом того что автор исчез(вроде бы довольным) ПиЭс. Топик сделал мне пятницу, но лучше закрыть его ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 11:28 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
alexeyvgЖесть. Я обсуждаю ваше высказывание про CTE, при чём тут индексы? Изучите статью We recently assisted a global ISV to address a performance issue related to a poor performing recursive CTE (Common Table Expression). The ISV wanted the query that was running in excess of 3 minutes to run in less than 15 seconds on their servers. The end result of our efforts was a 3,600% performance improvement. Recursive CTE queries do have a reliance on the unique parent/child keys in order to get the best performance. Это ровно то, что я и утверждал изначально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 11:37 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Rismenпропущено... Если открыть бд, то в таблице Residency столбце PriceOfResidency полная стоимость за проживание. В таблице Payment столбце Pay сколько оплачено. И нужно вывести тех клиентов, которые либо не заплатили, либо оплатили частично. Я вижу, что клиенты 1,2,3 полностью оплатили. В запросе я, так как писал его без БД, неправильно указал имя поля. Вместо SUM(ISNULL(P.Payment,0)) должно быть SUM(ISNULL(P.Pay,0)) И запрос честно выдает оставшихся двух клиентов. Еще раз запрос, с исправленным именем поля: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Спасибо, запрос выдаёт нужных клиентов, но только цифры не те ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 12:33 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
RismenСпасибо, запрос выдаёт нужных клиентов, но только цифры не те База у меня есть. Уточните, что не так с цифрами, pls. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 12:34 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ptr128Rismenпропущено... Если открыть бд, то в таблице Residency столбце PriceOfResidency полная стоимость за проживание. В таблице Payment столбце Pay сколько оплачено. И нужно вывести тех клиентов, которые либо не заплатили, либо оплатили частично. Я вижу, что клиенты 1,2,3 полностью оплатили. В запросе я, так как писал его без БД, неправильно указал имя поля. Вместо SUM(ISNULL(P.Payment,0)) должно быть SUM(ISNULL(P.Pay,0)) И запрос честно выдает оставшихся двух клиентов. Еще раз запрос, с исправленным именем поля: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Ох, слепая, извините. Всё работает, спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 12:35 |
|
||
|
|

start [/forum/topic.php?all=1&fid=46&tid=1690628]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
125ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 451ms |

| 0 / 0 |
