Основная функция моего приложения заключается в поиске автобусных остановок по названию, которые будут возвращать информацию об автобусной остановке, а также все услуги, отправляемые с нее.Я использовал 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.
Спасибо