SQL Server 2008 にデータベースがあり、そのすべてに緯度、経度、および対応する地理フィールドが含まれる約 120 億行があります。最近、地理フィールドを照会する機能を追加する必要がありました。4 TB 以上のデータを処理するのに 6 日かかった空間インデックスを追加しました。
CREATE SPATIAL INDEX IX_Location_Geo ON Location
(
Geo
) 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
GO
そのようなクエリを使用して意図的に追加...
SELECT TOP 100
ci.LocationID, ci.Geo.STDistance(@g)
FROM Location ci WITH(INDEX(IX_Location_Geo))
WHERE ci.Geo.Filter(@region) = 1
ORDER BY ci.Geo.STDistance(@g)
お見積り実施プランはこちら・・・
このクエリを 1 億行のサンプル セットでテストしたところ、見事に機能しました。しかし、請求行が 12 行ある場合、クエリは約 4 時間後に応答せず、最終的にディスク書き込みエラーで失敗します。
Msg 1101, Level 17, State 10, Line 4 Could not allocate a new page
for database 'TEMPDB' because of insufficient disk space in filegroup
'DEFAULT'. Create the necessary space by dropping objects in the filegroup,
adding additional files to the filegroup, or setting autogrowth on for
existing files in the filegroup.
私の側の明らかな見落としに気付くかもしれない誰かがいることを願っています. 本当にありがとう!