Базовый выбор для таблицы с большим количеством строк выполняется очень медленно

В настоящее время я настраиваю сервер sql и геосервер, чтобы отображать свои собственные карты с использованием openlayers в клиентском веб-браузере. Проблема, с которой я сталкиваюсь, заключается в том, что моя база данных SQL Server содержит ТОННЫ дорог (каждая дорога в Техасе), и простой выбор таблицы занимает НАВСЕГДА (почти 2 минуты с 2 348 638 строк). Есть ли у кого-нибудь какие-либо советы или рекомендации, которые я могу использовать для ускорения этого запроса, чтобы моему картографическому серверу не требовалось миллион лет для отображения фрагментов карты для клиента. Спасибо


person user2309367    schedule 10.02.2014    source источник
comment
Вы должны опубликовать свой SQL и структуру таблицы, если хотите, чтобы у кого-то был шанс помочь вам.   -  person thatidiotguy    schedule 11.02.2014
comment
Вы выбираете все столбцы и все строки? Почему? Неужели кто-то действительно собирается с пользой использовать все 2 миллиона строк и каждый атрибут каждой дороги? Также вы выполняете этот запрос из Management Studio на другом компьютере? Если это так, вам нужно учитывать, что передача более 2 миллионов строк по сети, а затем их рендеринг приложением будет способствовать некоторой замедлению. Почему бы не попытаться сосредоточиться на решении проблем с производительностью, возникающих при выполнении реальных осмысленных запросов к таблице?   -  person Aaron Bertrand    schedule 11.02.2014
comment
Также мне кажется, что, поскольку дороги на самом деле не сильно меняются, вам следует подумать о предварительной материализации фрагментов карты и т. д.   -  person Aaron Bertrand    schedule 11.02.2014
comment
Есть ли у вас полезные ссылки для предварительной материализации тайлов карты?   -  person user2309367    schedule 11.02.2014
comment
Поскольку мы больше ничего не знаем, я предполагаю, что вы не проиндексировали столбцы своего поискового фильтра, что вынуждает SQL Server выполнять полное сканирование таблицы каждый раз. Это первое, на что я бы обратил внимание. Конечно, если бы вы могли опубликовать пример определения таблицы и запроса, который вы используете для выбора данных из нее, это очень помогло бы нам помочь вам. :)   -  person Kahn    schedule 11.02.2014
comment
Вам абсолютно необходимо выполнить предварительный рендеринг тайлов. Это безумие перерисовывать плитки каждый раз, когда кто-то их запрашивает....   -  person OGHaza    schedule 16.02.2014


Ответы (1)


То же, что и для вашего другого вопрос, при частичном рендеринге: проиндексируйте свои данные. Индексируйте поля геометрии и любые другие поля, по которым вы, вероятно, будете фильтровать.

person b2Wc0EKKOvLPn    schedule 13.02.2014