Im new с MS SQL-Server. Но у него уже есть проблема.
У меня есть запрос:Как ускорить SQL-запрос
with by_segment as (
SELECT
Road.Road_ID,
GEOMETRY::STGeomFromText(Track.Track.STAsText(),4326) as the_geom,
row_number() over (partition by road_id order by Segment_Id) as [rn],
count(*) over (partition by road_id) as [c]
FROM dbo.Road
LEFT JOIN Segment_ID ON Road.Road_ID = Segment_ID.Road_ID
LEFT JOIN Track ON Segment_ID.Segment_ID = Track.Segment_ID
),
roads_by_segment as (
select
road_id,
the_geom,
[rn],
[c]
from by_segment
where [rn] = 1
union all
select
[a].road_id,
[a].the_geom.STUnion([b].the_geom),
[b].[rn],
[b].[c]
from by_segment as [a]
inner join roads_by_segment as [b]
on [a].segment_id = b.[segment_id]
and [a].[rn] = [b].[rn]+1
)
select * from roads_by_segment where [rn] = [c]
своих работ, но и ее тека много времени. Я имею в виду, когда я нажимаю выполнить запрос, я получаю результат в течение 2 секунд, но запрос все еще работает около 5 минут.
Я думаю, что его слишком много выбирает здесь. Там выбирается необходимость в функции geometry1.STUnion(geometry2)
.
Возможно ли выполнить функцию из этого запроса на монстр? И использование функции может сделать этот запрос быстрее?
UPDATE
Я хочу создать представление, чтобы опубликовать его на Geoserver. Но у меня проблема с геометрией. У меня есть геометрия сегментов линии.
Думаю, я собираюсь рассказать о структуре таблиц. У меня есть 3 таблицы:
Трек
Segment_ID(character),
Track (geometry)
Segment_ID
Segment_ID(character),
Road_ID(character)
роуд
Road_ID(character),
Road_Name(character)
И в результате запроса я eant получить Road.Name, Road.Road_ID и все сегмент, соединенный в единую функцию для этой дороги.
UPDATE
я вижу что-то интересное. В Столовой дороге у меня 76 рядов. Когда я нажимаю выполнить запрос, я получаю 75 строк, и через 5 минут я получаю все 76 строк. Итак, проблема в последней итерации. Что может быть неправильным?
UPDATE
План выполнения http://sd.reborn.ru/download.php?fid=f52cb6c6146fdb993c1375f8b1da4787
Хорошо. Этот сайт не является сайтом «сделай мою работу для меня». В частности, вы взяли запрос, который я написал для вас здесь (http://stackoverflow.com/questions/14943346/how-to-connect-lines-in-single-feature-in-sql-server/14949585), представили его как свое, и теперь просят людей настроить это. Что вы пробовали? Только у вас есть доступ к вашим фактическим данным, поэтому любые усилия, прилагаемые здесь, будут в основном спекулятивными. Вы посмотрели план запроса? Что это говорит? Скажите нам, что вы пробовали, а что нет, и мы можем вам помочь. –