|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
Добрый день всем! Есть вот такой запрос: Код: plaintext 1. 2.
Выполняется быстро, конструкции подсмотрел через профайлер в 1с но если вот это '20110101 0 0' перенести в переменную - тогда время увеличивается в десятки раз. например: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Почему так? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 18:36 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
Потому что запросы разные. И, скорее всего, с разным планом. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 18:38 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
А чем они разные ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 18:45 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
iboobelА чем они разные ? Тем, что в одном случае сервер знает накладываемые ограничения, а в другом - нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 18:47 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
iboobel, уточню: знает накладываемые ограничения во время компиляции . ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 18:49 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 18:49 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
iljyiboobelА чем они разные ? Тем, что в одном случае сервер знает накладываемые ограничения, а в другом - нет. И ему приходится перебирать всю таблицу и сравнивать с переменной ? правильно я понял ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 18:49 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
iboobeliljyпропущено... Тем, что в одном случае сервер знает накладываемые ограничения, а в другом - нет. И ему приходится перебирать всю таблицу и сравнивать с переменной ? правильно я понял ? Неправильно. В случае констант сервер может более точно оценить количество выбираемых записей и соответственно оптимизировать выполнение. Посмотрите в план уже наконец. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 18:52 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
Посмотрел, видно что в первом случае перебрал 18 000 строк, в другом 1 500 000 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 19:08 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
iboobelПосмотрел, видно что в первом случае перебрал 18 000 строк, в другом 1 500 000 И все? При тех же значениях параметров? Быть такого не может, должны еще операции отличаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 19:17 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
может у вас после манипуляций с датами совсем другие значения получаются? вы проверяли? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 19:19 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
iboobel, Данные достаете видимо из таблиц _1SENTRY, _1SJOURN или из регистров... А зачем так длинно: set @date_start = "манипуляции с датой"+' 0 0' вполне достаточно: DATE_TIME_IDDOC>='20110921' and DATE_TIME_IDDOC<'20110922' И еще, иногда бывает очень полезно добавить в индексы, где индексируется DATE_TIME_IDDOC, включенные столбцы с необходимыми для выборки данными. 1С 7.7 такие манипуляции с индексами терпит. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 19:27 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
Сори, таки отличаются. В первом случае (время более минуты) clustered index scan (cost 93 %) >>> Parallelism (cost 7%) >>> Select (cost 0%) В другом (время 1 секунда) index seek (cost 0%) >>> bookmark lookup 100% >>> select 0% ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 19:36 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
VladimirKr, да из регистров ) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 19:41 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
iboobel, Дык попробуйте убрать bookmark lookup включенными столбцами, если столбцов немного. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 19:49 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
iboobelСори, таки отличаются. В первом случае (время более минуты) clustered index scan (cost 93 %) >>> Parallelism (cost 7%) >>> Select (cost 0%) В другом (время 1 секунда) index seek (cost 0%) >>> bookmark lookup 100% >>> select 0% Проще всего задать принудительно использование индекса with index... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 20:01 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
VladimirKriboobel, Дык попробуйте убрать bookmark lookup включенными столбцами, если столбцов немного. запрос с букмарком вроде автора вполне устраивает ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2011, 21:02 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
step_ksVladimirKriboobel, Дык попробуйте убрать bookmark lookup включенными столбцами, если столбцов немного. запрос с букмарком вроде автора вполне устраивает Да, вполне устраивает. Я не совсем понял они по разному выполняются, сделал через exec (@sql) и временную таблицу. Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Может не очень феншуйно, но работает ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2011, 11:39 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
iboobelstep_ksпропущено... запрос с букмарком вроде автора вполне устраивает Да, вполне устраивает. Я не совсем понял они по разному выполняются, сделал через exec (@sql) и временную таблицу. Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Может не очень феншуйно, но работает Сказки рассказываете! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2011, 11:45 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
iboobelЯ не совсем понял они по разному выполняются, сделал через exec (@sql) и временную таблицу. Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Может не очень феншуйно, но работает временная таблица то зачем? сразу без into пишите тогда уж. Или у вас там не так все просто как вы показываете? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2011, 11:45 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
и как это вы так ловко поймали снаружи созданную в exec-е таблицу с одной решеткой? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2011, 11:46 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
так попробуйте Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2011, 11:47 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
step_ks, таблица создаётся где-то раньше, а не в экзеке ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2011, 11:48 |
|
Почему настолько отличается скорось выполнения запроса ?
|
|||
---|---|---|---|
#18+
Shakillstep_ks, таблица создаётся где-то раньше, а не в экзеке а зачем тогда показывать , что создается в экзеке? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2011, 11:50 |
|
|
start [/forum/topic.php?fid=46&msg=37450592&tid=1707992]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
166ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 242ms |
total: | 521ms |
0 / 0 |