Récemment, je regardais autour de moi et j'ai été pg_stat_user_tables
surpris de voir un grand nombre de balayages séquentiels sur certaines de mes tables spatiales. Effectivement, ces tableaux manquaient d'index spatiaux.
Comment puis-je trouver toutes les tables avec une colonne de géométrie non indexée?
postgis
postgresql
dbaston
la source
la source
Réponses:
Les tables avec des index spatiaux manquants peuvent être trouvées en interrogeant les tables système:
la source
WHERE t.typname IN ('geometry', 'geography') AND t.typtype='b'
? Voir trac.osgeo.org/gdal/ticket/6896 .t.typtype = 'b'
morceau de cela?create table "geometry" (foo text);
donneERROR: type "geometry" already exists HINT: A relation has an associated type of the same name, so you must use a name that doesn't conflict with any existing type.
J'ai créé une fonction qui peut créer automatiquement tous les index manquants. Un paramètre "simuler" permet d'obtenir la liste des index spatiaux manquants, mais n'effectue pas CREATE INDEX
Voir https://gist.github.com/mdouchin/cfa0e37058bcf102ed490bc59d762042
Pour obtenir la liste des index manquants, exécutez:
Pour créer les index nécessaires, exécutez:
ou
la source