我有一個GeoIP位置數據庫,其IP地址表的起始和結束列是適用於相應位置記錄的IP地址範圍(即城市,州等)。塊表有大約540萬行數據。當我搜索特定的IP地址(下面的例子)時,搜索查詢非常慢。有沒有更好的方法來重新設計select語句或表來提高性能?選擇一系列數字時選擇速度較慢
SELECT [locationID] FROM [GeoLocationView] where (GeoLocationView.startipNum <= ip) and (GeoLocationView.endipnum) >= ip)
表如下所示
CREATE TABLE [dbo].[GeoCity_Blocks](
[id] [int] IDENTITY(1,1) NOT NULL,
[startIpNum] [bigint] NOT NULL,
[endIpNum] [bigint] NOT NULL,
[locId] [int] NOT NULL,
CONSTRAINT [PK_GeoCity_Blocks_A] PRIMARY KEY CLUSTERED
(
[startIpNum] ASC,
[endIpNum] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
你的執行計劃是什麼樣的? – 2012-03-12 15:26:23
你的桌子上是否有任何索引? – Lamak 2012-03-12 15:29:52
您給我們定義了一個表格,但您似乎是從視圖中進行選擇。視圖定義是什麼樣的?這個視圖中的所有選擇都很慢,還是僅僅是這個? – 2012-03-12 15:30:27