GTFS - все сервисы для конкретной остановки - PullRequest
0 голосов
/ 14 февраля 2019

Основная функция моего приложения заключается в поиске автобусных остановок по названию, которые будут возвращать информацию об автобусной остановке, а также все услуги, отправляемые с нее.Я использовал php и MySQL, и я смог сделать это с помощью GROUP_CONCAT.Сейчас я планирую перейти на MS SQL, и я сделал некоторые начальные работы над этим.Я могу получить всю необходимую информацию, используя хранимую процедуру, например:

SELECT Id, Name, Latitude, Longitude, Url,
(SELECT [dbo].[RoutesForStopId](Id)) 'Routes'
            FROM Stops WHERE Stops.Name LIKE '%' + @Parameter + '%'

Где RoutesForStopId - это скалярная функция:

SELECT @Routes = STUFF((
            SELECT DISTINCT ',' + r.ShortName FROM StopTimes st
            INNER JOIN trips t ON t.TripId = st.TripId
            INNER JOIN routes r ON r.Id = t.RouteId
            WHERE st.StopId = @StopId
            FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM Stops WHERE Stops.Id = @StopId

Работает как положено, но ответ очень медленный,Я часто получаю тайм-ауты при вызове этой службы.

Есть ли способ ускорить этот запрос?Я был бы признателен за помощь в этом, так как это важная часть информации для конечного пользователя, но, поскольку это так медленно, я собираюсь избавиться от этого.Раньше он работал намного быстрее с MySQL db.

Спасибо

...