我有这样的疑问:
SELECT boroughs.name
FROM boroughs, uniroads
WHERE uniroads.normalizedName='6 AVENUE'
AND st_intersects(boroughs.geometry, uniroads.way)
AND boroughs.name='Brooklyn'
0 results
但当我运行它时,它不会返回任何结果。但是,我可以在表中找到希望它返回的特定行,当我添加一个子句来请求该特定行时,它可以正常工作:
SELECT boroughs.name
FROM boroughs, uniroads
WHERE uniroads.normalizedName='6 AVENUE'
AND st_intersects(boroughs.geometry, uniroads.way)
AND boroughs.name='Brooklyn'
AND uniroads.osm_id='23334071'
1 result
我通过Postgres.app将Postgres 9.2.2.0与PostGIS一起使用。
最佳答案
猜猜看。uniroads.osm_id
看起来像一个键,因此它很可能被索引。AND uniroads.osm_id='23334071'
子句导致(另一个,也许?)要使用的索引,因此这可能意味着(某些?)最初使用的索引已损坏。
也许下面这句话会有帮助?
REINDEX TABLE boroughs;
REINDEX TABLE uniroads;
无论如何,这两个查询都需要
EXPLAIN ANALYZE
,以及所涉及表的完整定义。关于sql - PostgreSQL仅在添加其他AND子句时返回结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14764894/