小编wxd*_*dan的帖子

将非空间表与非空间列上的空间表连接时提高查询响应速度

我有一个经常更新影响某些几何图形的事件的表。几何区域是固定的,但可能有一个事件同时影响多个区域,因此两者之间存在多对多的关系。单个区域也可能同时受到多个事件的影响。

例如:

事件ID 区域编号
1 15
1 31
2 46
3 46
3 55
4 15

这些区域在我的表中表示为 ID 值。我需要在空间上表示这些值,因此我需要将这些值连接到包含s 和几何图形的event_id and area_id查找表。area_id不幸的是,这些表位于同一 SQL Server 2014 实例上的两个独立数据库中。

问题是这个连接过程非常慢;返回 18k-24k 行需要 90 秒到 3 分钟不等,具体取决于当前有多少事件处于活动状态。几何查找表包含 84k 行。

事件表结构(为了简单起见,删除了一些附加列):

USE Events_DB;
CREATE TABLE [dbo].[Events](
    [EVENTS_ID] [bigint] NOT NULL,
    [AREA_ID] [bigint] NOT NULL,
    [START_DATE_TIME] [smalldatetime] NULL,
    [END_DATE_TIME] [smalldatetime] NULL,
 CONSTRAINT [PK_Events] PRIMARY KEY CLUSTERED 
(
    [EVENTS_ID] ASC,
    [AREA_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS …
Run Code Online (Sandbox Code Playgroud)

sql-server execution-plan spatial sql-server-2014 query-performance

3
推荐指数
1
解决办法
125
查看次数