|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Коллеги, подскажите вариант оптимизации подобного запроса. В некоторых случая запрос выполняется непозволительно долго, и система не дожидается ответа. Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Вносить изменения в структуру нельзя, добавлять индексы нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 17:37 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Код: sql 1.
это правда работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 17:42 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
ChallengerВ некоторых случая запрос выполняется непозволительно долгоТогда почему вы решили, что проблема в запросе? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 17:44 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Shakill, Это работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 17:48 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Shakill Код: sql 1.
это правда работает?простите, был напуган. но структуру хотя бы показать можно. с имеющимися индексами и прочим ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 17:48 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
invmChallengerВ некоторых случая запрос выполняется непозволительно долгоТогда почему вы решили, что проблема в запросе? Я тешу себя надеждой, что его можно заменить на что-то работающее быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 17:48 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
ChallengerВносить изменения в структуру нельзя, добавлять индексы нельзя. Купить процессоры, память, диски можно ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 17:49 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#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. 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. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 17:54 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
ChallengerВот структура, раз спрашиваете, А про результат, который достигается этим запросом, тоже расскажите ? Версию сервера покажите ? А может даже реальный план выполнения ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 17:58 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
A таблица tbImgInfo случаем тоже не блокируется (в смысле туда добавить nolock или set transaction isolation level unrestricted)? Попробуй как быстро на сервере напрямую выполняется раз 10-20 .. частично для поиска тормозов можно пока условия упроистить (например исключив/заменив{на предопределённый список} where .. ..not in..(select..)and..not in(select..) ) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 18:31 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Измените запрос так, чтобы не было OR. Во-вторых Ваше ТОП 30 с упорядочиванием приводит к сортировке, если в выборке несколько миллионов записей и больше - последствия будут катастрофичными. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2014, 11:29 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Владислав КолосовВаше ТОП 30 с упорядочиванием приводит к сортировке, если в выборке несколько миллионов записей и больше - последствия будут катастрофичными. С чего вы это взяли ? Вроде сортировка идет по полю image_id, которое является кючем кластеризованного индекса. Откуда там возник сортировка ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2014, 12:15 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
ExpromentВроде сортировка идет по полю image_id, которое является кючем кластеризованного индекса. Откуда там возник сортировка ? сортировки не будет в случае, если для выполнения будет выбрана стратегия сканирования индекса, совпадающего с сортировкой. и тогда, к слову, при неверной оценке для выполнения запрошенного TOP 30 может потребоваться высканить чуть ли не все! а в противном случае выборка будет организована по-другому, реализована полностью, отсортирована и вам вернется TOP 30, как и просили короче, нет универсального ответа на ваш вопрос. точнее он есть, но он не особо поможет - ставьте критерии выборки такие, чтобы запрос "сразу" и "эффективно" отбирал "достаточно мало" данных, тогда они будут дальше отсортированы и сделано TOP 30. но это фантастика ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2014, 12:33 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Shakill Код: sql 1.
это правда работает? ChallengerShakill, Это работает. А сакральный смысл этого может кто-нибудь мне втолковать. Или я совсем плох стал... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2014, 13:40 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
aleks2, можно убрать where и смысл останется тем же, т.к. поля not null ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2014, 13:59 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
aleks2А сакральный смысл этого может кто-нибудь мне втолковать.Это альтернатива not exists. Для больших оригиналов ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2014, 14:02 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Пропадал я тут на некоторое время. Сейчас вернулся - все перечитал внимательно, но так и не понял можно ли что-то сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2014, 16:42 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Можно, я же написал. Уберите OR. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2014, 16:48 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
GloryА про результат, который достигается этим запросом, тоже расскажите ? Версию сервера покажите ? А может даже реальный план выполнения ? Glory, версия SQL Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright (c) 1988-2005 Microsoft Corporation Express Edition on Windows NT 6.1 (Build 7601: Service Pack 1) План выполнения выложу чуть позже. GloryА про результат, который достигается этим запросом, тоже расскажите ? Выбираются записи по определенному критерию, которые еще не обработаны. Те, которые обработаны - фиксировались в сторонней таблице tbImgInfo. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2014, 16:57 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
ChallengerВыбираются записи по определенному критерию, которые еще не обработаны. Те, которые обработаны - фиксировались в сторонней таблице tbImgInfo. И предложенный текст запроса является единственно возможным решением ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2014, 16:59 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Glory, конечно нет. Я как раз и спрашиваю про альтернативу. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 17:40 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
ChallengerЯ как раз и спрашиваю про альтернативу. Т.е. вы предлагаете написать свободное сочинение на тему "Выбираются записи по определенному критерию, которые еще не обработаны. Те, которые обработаны - фиксировались в сторонней таблице tbImgInfo." ? Т.е. самим придумать "определенные критерии" и "еще не обработаны" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 17:41 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Нет сочинения написать не предлагаю. Предлагаю просто подать идею как здесь изменить запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 17:52 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
ChallengerПредлагаю просто подать идею как здесь изменить запрос. Посмотреть на план. Выявить самые дорогие шаги. Переписать их. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 17:54 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Challenger, подумайте лучше над изменением "схемы данных". потому как если во главу угла ставить "моментальные" выборки - данные для них должны храниться "уже готовыми", то есть, как минимум, проиндексированными "под выборку". иначе (грубо! + уже писал же про это) у вас будет или (долгий?) скан с расчетами, пока не наберутся ваши TOP записей или полноценное выполнение запроса, чтобы после оставить ваши TOP записей. иногда, при определенном распределении данных, "достаточно" запинать оптимизатор так, чтобы он всегда работал по варианту "скан + расчет пока не наберется TOP" ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 18:11 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
тормозит вот эта часть Код: sql 1.
Если ее убрать, то запрос выполняется моментально ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 18:14 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Challengerтормозит вот эта часть Код: sql 1.
Если ее убрать, то запрос выполняется моментально Вот вам и предлагали выше поменять на not exists, тем более надеюсь ExaminationID типа int и string_value для отобранных данных тоже типа int => ускорим работу при работе с int: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 18:27 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
зеленый админ, вот так действительно намного лучше работает. Код: sql 1.
К сожаление string_value вот такое 2.16.840.1.113669.632.10.20120401.111535306.1.20 Преобразование к int не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 18:56 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Но проблема все равно не решилась, и еще один удивительный момент для себя я обнаружил. В первоначальном варианте я написал Код: sql 1.
но реально здесь переменная Код: sql 1.
запрос начинает тормозить при некоторых значениях @image_id, например при таком 57400, хотя поле image_id входит в Primary key. Почему? И как избавиться от тормозов здесь? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 19:43 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Challenger, планы сравните и/или покажите. ну или перечитайте тот бред что я писал. я боролся уже с таким. просто и быстро, скорее всего, не выйдет. пока не поймете проблему - перекраивание запроса вам ничего не даст ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 20:15 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Crimean, теперь запрос стал таким Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Но все равно тормозит при некоторых значениях @image_id, сейчас значение 57400 Вот план выполнения, во вложении Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 21:23 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Много народу просило план выполнения. План выполнения запроса я выложил. И никто ничего не говорит. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 10:47 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
ChallengerНо все равно тормозит при некоторых значениях @image_idПопробуйте option(recompile) добавить в запрос.ChallengerПлан выполнения запроса я выложилПлан был нужен актуальный, а не оценочный. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 11:06 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
ChallengerИ никто ничего не говорит. Зачем делается left join Romexis_db.dbo.RIM_Image_Attrib b, если в выходном наборе нет ни одного поля из этой таблицы ? Что за функция lab.dbo.RmDateToDT ? Зачем она нужна ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 11:34 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
GloryЗачем делается left join Romexis_db.dbo.RIM_Image_Attrib b, если в выходном наборе нет ни одного поля из этой таблицы ? b.string_value используется GloryЧто за функция lab.dbo.RmDateToDT ? Зачем она нужна ? Так исторически сложилось преобразование даты, потому что дата хранится в корявом формате в устройстве Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 11:49 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Challengerb.string_value используется Все равно построение запроса режет газ left join Romexis_db.dbo.RIM_Image_Attrib b - отдельно от and not exists (select 1 from lab.dbo.tbImgInfo(nolock) where (ExaminationID = b.string_value)) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 11:56 |
|
Можно ли оптимизировать запрос
|
|||
---|---|---|---|
#18+
Challenger, вместо скалярной UDF голимой попробовать выражение: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 12:23 |
|
|
start [/forum/topic.php?all=1&fid=46&tid=1701941]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
173ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 294ms |
0 / 0 |