У меня есть таблица с 8 миллионами записей со многими полями, включая значения lat / long, и индекс по полям Lat / Long.
Я делаю запрос, чтобы найти записи, которые попадают в квадрат вокруг точки (чтобы потом уточнить в круг), что-то вроде:
ВЫБЕРИТЕ Lat, Long ИЗ данных WHERE (Lat между 1 и 2) и (Long между 1 и 2).
На моем компьютере разработчика он использует индекс и возвращает примерно через 50 мс (в первый раз, когда я делаю запрос для определенной точки).
На моем рабочем сервере он также использует индекс, но для возврата первого запроса требуется около 2-4 секунд, для следующих запросов - 10 мс.
На моем компьютере разработчика SQL Server занимает 500 МБ памяти, на моем сервере - около 130 МБ.
Для меня очевидный вывод состоит в том, что на моей машине индекс загружается в память, а на производственном сервере его нет ...
Правильно ли мое предположение?
Что я могу сделать, чтобы это исправить?
Это SQL Express 2005 (бесплатная версия) на W2k3 на обеих машинах.
Единственное отличие, которое я могу себе представить, заключается в том, что моя машина 32-разрядная, а сервер 64-разрядный, но я не думаю, как это может повлиять на загрузку индекса в памяти.
Кроме того, серверу не хватает памяти. Он имеет физическую память 2 Гб и заряд коммита около 500 Мб, так что есть много свободного.
Любые идеи будут с благодарностью!
Спасибо!