В настоящее время я использую SQL Server и у меня возникли проблемы, у меня есть таблица адресов с 12M адресов;когда я ищу один адрес;его займет 3 или 4 минуты, чтобы найти его.Я должен искать более 40000 адресов каждый день в моей таблице.поэтому сервер Sql не помогает мне решить эту проблему.я думаю об использовании другого SGBD, может быть MongoDB, но я понятия не имею, будет ли он работать или нет.Моя цель - найти каждый запрос менее чем за 2 секунды.
Мой запрос:
SELECT TOP 1 adresse
FROM (SELECT
geography::Point(p.latitude, p.longitude,4326).STDistance(geography::Point(Cast(Replace('28,5259799957275', ',', '.') AS FLOAT)
, Cast(Replace('28,5259799957275', ',', '.') AS FLOAT), 4326)) AS rn,
p.adresse
FROM [adressespositions] p) ph
WHERE ph.rn < 10
Моя таблица:
CREATE TABLE [dbo].[adressespositions](
[idgeocodage] [int] IDENTITY(1,1) NOT NULL,
[latitude] [float] NULL,
[longitude] [float] NULL,
[adresse] [nvarchar](100) NULL,
[dateajout] [datetime] NULL,
[source] [nvarchar](100) NULL,
[idsource] [int] NULL
) ON [PRIMARY]
Оперативная память моего сервера: 128GB.
как я могу сделать этот запрос очень быстрым?или я должен использовать другой SGBD?