【发布时间】:2016-10-23 05:44:45
【问题描述】:
对于这样的查询:
WITH params as (SELECT -28 as lat, 151 as lon
FROM dual)
SELECT sighting_id, sqrt(power(lat - latitude, 2) + power(lon - longitude, 2))
AS distance FROM sightings CROSS JOIN params
WHERE sqrt(power(lat - latitude, 2) + power(lon - longitude, 2)) =
(SELECT MAX(sqrt(power(lat - latitude, 2) + power(lon - longitude, 2)))
FROM sightings CROSS JOIN params);
我将如何在其上构建基于函数的索引? Sighting_id 是主键,这是否意味着 id 必须在 long 和 lats 上构建它?我查看了一些示例,但似乎没有一个真正向我展示我如何在这里构建一个。
执行计划如下:
id operation name
0 select statement
1 table access full sighting
2 sort aggregate
3 table access full sighting
【问题讨论】:
-
我尝试使用:CREATE INDEX Idx ON 目击sqrt(power(lat - latitude, 2) + power(lon - longitude, 2));除了它无法看到 with 语句中定义的参数
标签: sql oracle function indexing