Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть SQL-запрос (без выделенного), который формируется за 6 минут при возвращении 20 000 строк. SQL-запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Как можно обойти эту проблему? Есть вариант толкать в TEMPORARY TABLE и задавать индексы. Скажите, какие есть другие варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2018, 07:40 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
ferzmikkЕсть SQL-запрос (без выделенного), который формируется за 6 минут при возвращении 20 000 строк.А в многоточии что, там нет TOP nnn ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2018, 10:16 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
alexeyvgferzmikkЕсть SQL-запрос (без выделенного), который формируется за 6 минут при возвращении 20 000 строк.А в многоточии что, там нет TOP nnn ?TOP нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2018, 10:26 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
alexeyvgferzmikkЕсть SQL-запрос (без выделенного), который формируется за 6 минут при возвращении 20 000 строк.А в многоточии что, там нет TOP nnn ? SQL-запрос Код: 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. 72. 73. 74. 75. 76. 77. 78. 79. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2018, 11:12 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
ferzmikkНо если добавить ORDER BY, то выполняется дольше полтора часа, даже не дожидался. Как можно обойти эту проблему? Есть вариант толкать в TEMPORARY TABLE и задавать индексы. Скажите, какие есть другие варианты?Видимо, как то криво строится план, сортирует в таблицах до накладывания ограничений. Можно сравнить планы... Попробуйте сделать первый запрос INTO #temp, а потом выбрать из неё с сортировкой, думаю, и без всяких индексов 20 тыщ должно отсортировать быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2018, 11:21 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
alexeyvgВидимо, как то криво строится план, сортирует в таблицах до накладывания ограничений.Подскажите, как можно скорректировать планы запросов? Можно сравнить планы...Нужно обращать внимание на процент стоимости? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2018, 12:52 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
ferzmikkМожно сравнить планы...Нужно обращать внимание на процент стоимости?Нужно посмотреть, где делается сортировка. ferzmikkalexeyvgВидимо, как то криво строится план, сортирует в таблицах до накладывания ограничений.Подскажите, как можно скорректировать планы запросов?Можно попробовать обновить статистику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2018, 14:53 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
alexeyvgПопробуйте сделать первый запрос INTO #temp, а потом выбрать из неё с сортировкой, думаю, и без всяких индексов 20 тыщ должно отсортировать быстро. SQL-запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 10:43 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
ferzmikk, авторНо не хотелось бы использовать времянку, так как увеличивает TempDB. а на кой она вообще тогда :) зы Код: sql 1. 2. текущая реальность сильно не рекомендует так делать... CREATE TABLE вместе с индексом и INSERT.... ms никогда не победит tempdb до конца :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 10:47 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
TaPaKтекущая реальность сильно не рекомендует так делать... Почему? CREATE TABLE вместе с индексом и INSERT.... Я правильно понимаю, что после того, как табличную переменную Выгрузка4 - вставляем в созданную таблицу с индексами (не временная, назовем Таблица1) и там внутри сортируем? Или после вставки SELECT * FROM Таблица1 GROUP BY ...? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 10:59 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
ferzmikk, потому что гладиолусы там авторyou use these methods as best practices in future Transact-SQL development: Remove the DROP TABLE commands for any temporary tables that won't be reused within the same execution of the stored procedure. SQL Server will remove the temporary tables when the session that created the temporary tables has ended. Avoid using the TRUNCATE TABLE command against temporary tables. Avoid altering temporary tables after they have been created. If indexes are created against the temporary table, consider moving these to inline index creation statements within the CREATE TABLE command. со старыми проблемами с блокировками системных объектов tempdb https://support.microsoft.com/en-us/help/4131193/performance-issues-occur-in-form-of-pagelatch-ex-and-pagelatch-sh-wait ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 11:33 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
ferzmikkЯ правильно понимаю, что после того, как табличную переменную Выгрузка4 - вставляем в созданную таблицу с индексами (не временная, назовем Таблица1) и там внутри сортируем? Или после вставки SELECT * FROM Таблица1 GROUP BY ...?Вы попробуйте индекс вообще не делать. Не факт, что сортировка при создании индекса будет быстрее, чем при выборке. Всё таки там нужно сохранять отсортированные данные. TaPaKсо старыми проблемами с блокировками системных объектов tempdbДумаю, у ТС не такие нагрузки и не столько пользователей, что бы такие тонкости учитывать. Если он смотрит, как ускорить запрос с часов до минут. Какая нибудь ночная выгрузка, когда пользователи спят дома :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 17:11 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
alexeyvg, авторДумаю, у ТС не такие нагрузки и не столько пользователей, что бы такие тонкости учитывать. Если он смотрит, как ускорить запрос с часов до минут. Какая нибудь ночная выгрузка, когда пользователи спят дома :-) нисомненно, проблемы вроде от 4к одновременных объектов. Речь про то, что мягкие намекают на стандарт разработки с исключением этих телодвижений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 17:14 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
alexeyvgferzmikkЯ правильно понимаю, что после того, как табличную переменную Выгрузка4 - вставляем в созданную таблицу с индексами (не временная, назовем Таблица1 ) и там внутри сортируем? Или после вставки SELECT * FROM Таблица1 GROUP BY ...?Вы попробуйте индекс вообще не делать. Не факт, что сортировка при создании индекса будет быстрее, чем при выборке. Всё таки там нужно сохранять отсортированные данные.Получилось. Без индексов. Интересует такой вопрос, если два пользователя или более одновременно вызвали процедуру, то как тут распределится Таблица1 ? Или надо прописать запрос так, что используется ли кем то Таблица1 или нет? В MS SQL Server есть какие нибудь технологии, которые учитывает или отлавливают такие подобные случаи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2018, 09:00 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
ferzmikkИнтересует такой вопрос, если два пользователя или более одновременно вызвали процедуру, то как тут распределится Таблица1 ?Эээ, конечно, нужно использовать временную таблицу, не надо постоянную. Вот как вы писали: Select * INTO #Выгрузка FROM Выгрузка4 И потом, без создания индексов, запрос из #Выгрузка с нужной сортировкой. Потом, после завершения выполнения процедуры, таблица #Выгрузка сама удалится, ничего для этого делать не надо, ну и запускать можно в каком угодно количестве экземпляров, из разных коннектов. С постоянной таблицей будет, во первых, медленней, во вторых, нужно будет разделять данные по коннектом, для чего придётся создавать кластерный индекс по SPID, в общем, всё будет хуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2018, 09:54 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
alexeyvgПотом, после завершения выполнения процедуры, таблица #Выгрузка сама удалится, ничего для этого делать не надо , ну и запускать можно в каком угодно количестве экземпляров, из разных коннектов.Как сама может удалиться без DROP #Выгрузка ? Или не удаляется, после завершения запроса, потому что там индексы есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2018, 10:14 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
ferzmikk, вы хоть sql начните изучать, а не бомбите форму идиотизмом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2018, 10:16 |
|
||
|
Вопрос. Order by
|
|||
|---|---|---|---|
|
#18+
ferzmikkКак сама может удалиться без DROP #Выгрузка ? Из документации : Временные таблицы автоматически удаляются при выходе за пределы области определения , если не удалять их явно с помощью инструкции DROP TABLE. Локальная временная таблица, созданная хранимой процедурой, удаляется автоматически при завершении хранимой процедуры. Все прочие локальные временные таблицы удаляются автоматически в конце текущего сеанса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2018, 12:11 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39667859&tid=1689471]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
89ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 265ms |
| total: | 479ms |

| 0 / 0 |
