Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Разный план запросов при запуске из разных баз
|
|||
|---|---|---|---|
|
#18+
Впервые столкнулся с такой странной штукой и осознать происходящее не в силах. К примеру есть сервер server1, и я пишу кроссерверный запрос к таблице на сервере server2: SELECT * FROM server2.dwh.dbo.table Проблема в том, что если писать запрос из базы master строится нормальный план выполнения и запрос выполняется быстро(< 1 сек), но если писать запрос из какой то другой базы, то он висит часами. Не могу понять какое вообще отношение к плану выполнения имеет та база из которой я пишу запрос, ведь в запросе другой сервер и другая база? USE master Go SELECT * FROM server2.dwh.dbo.table - работает нормально USE [любая другая база] Go SELECT * FROM server2.dwh.dbo.table - меняет план запроса и выполняется долго Как такое лечить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2019, 14:13 |
|
||
|
Разный план запросов при запуске из разных баз
|
|||
|---|---|---|---|
|
#18+
Забыл еще в запросе условие по индексированному полю SELECT * FROM server2.dwh.dbo.table where data = 01012019 Судя по всему дело в статистике, так как если вместо даты подставить переменную, а при переменной на сколько я помню не учитывается статистика, то запрос отрабатывает одинаково и из других баз а не только мастера DECLARE @dt int = 01012019 SELECT * FROM server2.dwh.dbo.table where data = @dt Но осталось понять зависимость статистики и базы из которой выполняется запрос)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2019, 15:50 |
|
||
|
Разный план запросов при запуске из разных баз
|
|||
|---|---|---|---|
|
#18+
У поля data в server2.dwh.dbo.table какой тип? USE [любая другая база] Go SELECT * FROM server2.dwh.dbo.table where data = 20190101 Также долго отрабатывает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2019, 16:08 |
|
||
|
Разный план запросов при запуске из разных баз
|
|||
|---|---|---|---|
|
#18+
assmsk Как такое лечить? показать для начала Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2019, 16:09 |
|
||
|
Разный план запросов при запуске из разных баз
|
|||
|---|---|---|---|
|
#18+
1C Developer, я не правильно написал в примере, там дата YYYYMMDD в INT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2019, 16:32 |
|
||
|
Разный план запросов при запуске из разных баз
|
|||
|---|---|---|---|
|
#18+
komrad, Сервер с которого пишу запрос: Microsoft SQL Server 2016 (SP1-CU2) (KB4013106) - 13.0.4422.0 (X64) Mar 6 2017 14:18:16 Copyright (c) Microsoft Corporation Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: ) Сервер на котором лежит таблица: Microsoft SQL Server 2016 (SP2-CU3) (KB4458871) - 13.0.5216.0 (X64) Sep 13 2018 22:16:01 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2019, 16:34 |
|
||
|
Разный план запросов при запуске из разных баз
|
|||
|---|---|---|---|
|
#18+
assmsk1C Developer, я не правильно написал в примере, там дата YYYYMMDD в INT А поле data у вас какой тип? Тоже int или другой? Если поле data не int, то число в формате YYYYMMDD лучше привести в явном виде к нужному типу. Код: sql 1. 2. 3. Вы такой запрос отправляете? Скопируйте лучше сюда то, что вы отправляете, а то то сейчас выясниться еще о двух десятках моментов о которых вы забыли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2019, 16:42 |
|
||
|
Разный план запросов при запуске из разных баз
|
|||
|---|---|---|---|
|
#18+
assmsk, сравните вывод из мастера и пользовательской базы данных: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2019, 16:42 |
|
||
|
Разный план запросов при запуске из разных баз
|
|||
|---|---|---|---|
|
#18+
1C Developer, тип данных int, в условии тоже пишу int ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2019, 16:47 |
|
||
|
Разный план запросов при запуске из разных баз
|
|||
|---|---|---|---|
|
#18+
komrad, всех базах идентичные значения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2019, 16:49 |
|
||
|
Разный план запросов при запуске из разных баз
|
|||
|---|---|---|---|
|
#18+
assmsk1C Developer, тип данных int, в условии тоже пишу int Код: sql 1. 2. 3. 4. 5. 6. 7. 8. А такой вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2019, 16:54 |
|
||
|
Разный план запросов при запуске из разных баз
|
|||
|---|---|---|---|
|
#18+
assmsk, хватает разные скешированные планы. Можно влючить параметризацию или RECOMPILE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2019, 16:59 |
|
||
|
Разный план запросов при запуске из разных баз
|
|||
|---|---|---|---|
|
#18+
1C Developer, мое второе сообщение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2019, 17:02 |
|
||
|
Разный план запросов при запуске из разных баз
|
|||
|---|---|---|---|
|
#18+
assmsk, Вероятнее всего вы обновили сервер, а пользовательские базы в режиме совместимости старых версий. Сравните БД master и вашу БД - разные версии? select name, compatibility_level from sys.databases если разные, повысьте версию пользовательских БД до версии сервера и обновите статистику еще раз, хотя бы sp_updatestats ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2019, 17:08 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39814146&tid=1687838]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 378ms |

| 0 / 0 |
