我在Windows上使用PostgreSQL 9.2和PostGIS 2.0.1。使用WHERE ST_IsValid會提高性能嗎?
考慮表some_table
,其中GEOMETRY
列名爲geom
。
查詢1:
UPDATE some_table
SET geom = ST_MakeValid(geom)
查詢2:
UPDATE some_table
SET geom = ST_MakeValid(geom)
WHERE NOT ST_IsValid(geom)
是否調用ST_IsValid
作爲過濾器(如查詢2)提供任何性能提升(在查詢1)?
'EXPLAIN ANALYZE'並參見。我想這取決於無效數據的比例,是否有'some_table USING(ST_IsValid(geom))'函數索引和'ST_IsValid'與'ST_MakeValid'的相對成本。 – 2013-03-06 23:37:24
@CraigRinger我認爲這將是一個相當不常見的用例,因爲有一個有效性的索引。沒有? – jpmc26 2013-03-07 00:33:09
非常,但你永遠不知道有些人會怎麼設置,或者有誰會用不同的目標或情況閱讀這些內容。 – 2013-03-07 01:38:44