SQL Server检查任何行的where子句是否为true
我将选择那些与任何铁路相交的省份。所以我这样做(使用SQL Spatial): 但它效率不高,因为它必须检查每一条铁路几何图形和省几何图形之间的交点,以便计算SQL Server检查任何行的where子句是否为true,sql,optimization,sql-server-2014,spatial-query,Sql,Optimization,Sql Server 2014,Spatial Query,我将选择那些与任何铁路相交的省份。所以我这样做(使用SQL Spatial): 但它效率不高,因为它必须检查每一条铁路几何图形和省几何图形之间的交点,以便计算计数。但是,最好在检测到每个第一个交叉口时立即停止where子句,而无需检查其他交叉口。我的意思是: SELECT * FROM ProvinceTable WHERE ( --return true if this is true for any row in the RailroadTable: -- "Pr
计数。但是,最好在检测到每个第一个交叉口时立即停止where子句,而无需检查其他交叉口。我的意思是:
SELECT * FROM ProvinceTable
WHERE (
--return true if this is true for any row in the RailroadTable:
-- "ProvinceTable.Shape.STIntersects(RailroadTable.Shape) > 1"
)
那么,有没有更好的方法来为这样一个目标重写这个查询呢
编辑
令人惊讶的是,此查询占用相同的时间,并且不返回任何行:
您要使用存在
:
SELECT pt.*
FROM ProvinceTable pt
WHERE EXISTS (SELECT 1
FROM RailroadTable rt
WHERE pt.Shape.STIntersects(rt.Shape) = 1
);
您要使用存在
:
SELECT pt.*
FROM ProvinceTable pt
WHERE EXISTS (SELECT 1
FROM RailroadTable rt
WHERE pt.Shape.STIntersects(rt.Shape) = 1
);
您要使用存在
:
SELECT pt.*
FROM ProvinceTable pt
WHERE EXISTS (SELECT 1
FROM RailroadTable rt
WHERE pt.Shape.STIntersects(rt.Shape) = 1
);
您要使用存在
:
SELECT pt.*
FROM ProvinceTable pt
WHERE EXISTS (SELECT 1
FROM RailroadTable rt
WHERE pt.Shape.STIntersects(rt.Shape) = 1
);
这些形状构造可以用于内部连接吗?如图所示,我认为这种想法并不能提高性能,因为必须使用内部联接检查每一行的交点。这些形状构造可以用于内部联接吗?如图所示,我认为这种想法并不能提高性能,因为必须使用内部联接检查每一行的交点。这些形状构造可以用于内部联接吗?如图所示,我认为这种想法并不能提高性能,因为必须使用内部联接检查每一行的交点。这些形状构造可以用于内部联接吗?如图所示,我认为这个想法并没有提高性能,因为必须使用内部联接检查每一行的交叉点。我以前检查过这个方法,但令人惊讶的是它没有返回任何行!此外,它需要的时间多达count(*)
方法运行所需的时间@HosseinNarimaniRad支票需要=1
。尽管如此,这仍然可以针对他们测试条件笛卡尔积。你有空间索引吗?@MartinSmith你说得对。没有,没有可用的空间索引。我更喜欢ed专注于查询优化我之前检查过这个方法,但令人惊讶的是它没有返回任何行!此外,它需要的时间多达count(*)
方法运行所需的时间@HosseinNarimaniRad支票需要=1
。尽管如此,这仍然可以针对他们测试条件笛卡尔积。你有空间索引吗?@MartinSmith你说得对。没有,没有可用的空间索引。我更喜欢ed专注于查询优化我之前检查过这个方法,但令人惊讶的是它没有返回任何行!此外,它需要的时间多达count(*)
方法运行所需的时间@HosseinNarimaniRad支票需要=1
。尽管如此,这仍然可以针对他们测试条件笛卡尔积。你有空间索引吗?@MartinSmith你说得对。没有,没有可用的空间索引。我更喜欢ed专注于查询优化我之前检查过这个方法,但令人惊讶的是它没有返回任何行!此外,它需要的时间多达count(*)
方法运行所需的时间@HosseinNarimaniRad支票需要=1
。尽管如此,这仍然可以针对他们测试条件笛卡尔积。你有空间索引吗?@MartinSmith你说得对。没有,没有可用的空间索引。我更喜欢ed专注于查询优化