यदि आप जियोमेट्री कॉलम पर इंडेक्स बनाना चाहते हैं, तो आप इस plpgsql फ़ंक्शन को आज़मा सकते हैं जिसे मैंने अभी-अभी दस्तक दी है:
CREATE OR REPLACE FUNCTION BatchIndex(sn text, tn text, cn text) RETURNS void AS $$
DECLARE i_exists integer;
DECLARE idxname text;
BEGIN
idxname := 'idx_' || tn || '_' || cn;
select into i_exists count(*) from pg_class where relname = idxname;
IF i_exists = 0 THEN
EXECUTE 'CREATE INDEX ' ||idxname || ' ON '
|| sn || '.' || tn
|| ' USING GIST(' || cn || ')';
END IF;
END;
$$ LANGUAGE plpgsql;
मैंने इसे अपने डेटाबेस पर क्रोध करने की कोशिश नहीं की है, लेकिन यह काम करने के लिए लगता है।
इसका उपयोग करने के लिए, बस SELECT
इस तरह से एक स्टेटमेंट चलाएं :
select BatchIndex('public', f_table_name, f_geometry_column) from geometry_columns where f_table_schema = 'public';
सभी ज्यामिति स्तंभों पर अनुक्रमणिका बनाने के लिए, आप इसका उपयोग इस तरह कर सकते हैं:
select BatchIndex(f_table_schema, f_table_name, f_geometry_column) from geometry_columns;
बाद में, VACUUM ANALYZE
सब कुछ साफ करने के लिए एक रन ।