Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
unno Member Откуда: Сообщений: 124 |
Есть некий XML с повторяющимися тегами Скрипт на 1000 записей отрабатывает мгновенно в случае обращения только к первому индексу При попытке выборки элементов с индексом 2 скрипт выполняется с 100 раз дольше Как это можно побороть? declare @xml XML,@str varchar(max) select @str = '<DATA>' select top 1000 @str=@str+'<FLIGHT ID="1"><ROUTE NAPR="a"/><ROUTE NAPR="b"/></FLIGHT>' from sysobjects set @str=@str+'</DATA>' set @xml=@str SELECT ID = nullif(c.value('@ID', 'INT' ),''), ROUTE1 = nullif(c.value('(ROUTE[1]/@NAPR)', 'varchar(50)' ),'') --,ROUTE2 = nullif(c.value('(ROUTE[2]/@NAPR)', 'varchar(50)' ),'') FROM @xml.nodes('/DATA/FLIGHT') t(c) |
6 окт 19, 11:40 [21987559] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9639 |
SELECT ID = nullif(t.c.value('@ID', 'INT' ),''), ROUTE1 = nullif(a.n.value('@NAPR', 'varchar(50)' ),'') ,ROUTE2 = nullif(b.n.value('@NAPR', 'varchar(50)' ),'') FROM @xml.nodes('/DATA/FLIGHT') t(c) cross apply t.c.nodes('ROUTE[1]') a(n) cross apply t.c.nodes('ROUTE[2]') b(n); |
6 окт 19, 11:58 [21987565] Ответить | Цитировать Сообщить модератору |
unno Member Откуда: Сообщений: 124 |
спасибо, работает cross заменил на outer, теги не всегда заданы А чем вызвано такое резкое замедление при прямом обращении в XPATH? |
6 окт 19, 12:18 [21987576] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9639 |
На 2017-ом замедлений нет. |
||
6 окт 19, 12:33 [21987580] Ответить | Цитировать Сообщить модератору |
uaggster Member Откуда: Сообщений: 957 |
А Option (optimize for UNKNOWN) без переписывания запроса - не прокатит? Была какая-то долгоиграющая бага, подобным образом лечилась. |
7 окт 19, 10:36 [21987987] Ответить | Цитировать Сообщить модератору |
unno Member Откуда: Сообщений: 124 |
это опция помогает только с неправильным кешем плана тут она не играет |
7 окт 19, 22:11 [21988897] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |