SQL Server 2008 R2 एक्सप्रेस डेटाबेस में मेरा लगभग 75 मिलियन रिकॉर्ड है। प्रत्येक कुछ मान के अनुरूप एक लंबा लंबा है। तालिका में भूगोल कॉलम है। मैं दिए गए अक्षांश देशांतर (बिंदु) के लिए एक निकटतम पड़ोसी खोजने की कोशिश कर रहा हूं। मेरे पास पहले से ही स्थानिक सूचकांक के साथ एक क्वेरी है। लेकिन डेटाबेस में रिकॉर्ड कहां है, इसके आधार पर, पहली तिमाही या अंतिम तिमाही कहें, निकटतम पड़ोसी को खोजने के लिए क्वेरी को लगभग 3 से 30 सेकंड तक का समय लग सकता है। मुझे लगता है कि यह क्वेरी या स्थानिक सूचकांक को अनुकूलित करके बहुत तेज़ी से परिणाम देने के लिए अनुकूलित किया जा सकता है। अभी डिफ़ॉल्ट सेटिंग्स के साथ कुछ स्थानिक सूचकांक लागू किया है। यहां मेरी तालिका और क्वेरी जैसी दिखती है।
CREATE TABLE lidar(
[id] [bigint] IDENTITY(1,1) NOT NULL,
[POINTID] [int] NOT NULL,
[GRID_CODE] [numeric](17, 8) NULL,
[geom] [geography] NULL,
CONSTRAINT [PK_lidar_1] PRIMARY KEY CLUSTERED ([id] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
स्थानिक सूचकांक मैं उपयोग कर रहा हूँ:
CREATE SPATIAL INDEX [SPATIAL_lidar] ON [dbo].[lidar] ([geom]) USING GEOGRAPHY_GRID
WITH (
GRIDS =(LEVEL_1 = MEDIUM,LEVEL_2 = MEDIUM,LEVEL_3 = MEDIUM,LEVEL_4 = MEDIUM),
CELLS_PER_OBJECT = 16, PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
यहाँ मैं उपयोग कर रहा प्रश्न है:
declare @ms_at geography = 'POINT (-95.66 30.04)';
select TOP(1) nearPoints.geom.STAsText()as latlon
from
(
select r.geom
from lidar r With(Index(SPATIAL_lidar))
where r.geom.STIntersects(@ms_at.STBuffer(1000)) = 1
) nearPoints
यहाँ मेरे डेटाबेस में lat longs का एक नमूना है। सटीकता और घनत्व का एक विचार देने के लिए। सभी 70 मिलियन रिकॉर्ड एक शहर (लिडार डेटा) के लिए हैं।
POINT (-95.669434934023087 30.049513838913736)
अब यह क्वेरी मुझे ऊपर बताए अनुसार परिणाम देती है, लेकिन मैं यथासंभव बेहतर प्रदर्शन करना चाहता हूं। मेरा अनुमान है कि स्थानिक सूचकांक के डिफ़ॉल्ट मानों को बेहतर बनाने के लिए मैं प्रदर्शन को बेहतर ढंग से अनुकूलित करने के लिए ऊपर हो सकता हूं। इस बारे में कोई सुराग?
मैंने बफर को 10 से 1000 तक अलग-अलग करने की कोशिश की लेकिन लगभग उसी परिणाम के साथ।
साथ ही प्रदर्शन में सुधार के लिए किसी अन्य सुझाव का स्वागत है।
यहाँ वह प्रणाली है जिसका मैं अभी उपयोग कर रहा हूँ:
Windows 7 64bit Professional
Intel(R) Core(TM)2 Quad CPU Q9650 @ 3.00GHz (4 CPUs), ~3.0GHz
Ram: 8 GB
NVIDIA GeForce 9500 GT
lidar
टैग जोड़ने पर विचार करें ।