postgresql - 如何在 PostgresQL 中显示所有无效对象

标签 postgresql database-indexes

寻找 View 我可以列出 PostgreSQL 中的所有“无效”对象。 在 Oracle 中,我们可以使用 dab_objects.status 列,但我不确定在 PostgreSQL 中是否有一种简单的方法可以做到这一点。

也许,我可以用下面的代码检查无效索引。 我如何为其他对象执行此操作?

SELECT pg_class.relname 
FROM pg_class, pg_index 
WHERE pg_index.indisvalid = false 
AND pg_index.indexrelid = pg_class.oid;

最佳答案

我认为您不必检查任何其他内容,因为其他对象在 PostgreSQL 中不会变得无效。

Oracle 和 PostgreSQL 在这方面的工作方式截然不同:

  • 在 Oracle 中,您始终可以ALTER 对象(例如表),即使存在依赖对象(例如 View )也是如此。然后依赖对象变得无效并且必须重新编译

  • 在 PostgreSQL 中,您不能ALTER 具有依赖对象的对象,而这种方式会使这些依赖对象无效。您必须删除并重新创建相关对象。

失败的 CREATE INDEX 命令可能会留下无效的索引。

关于postgresql - 如何在 PostgresQL 中显示所有无效对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39114922/

相关文章:

php - 用于将 zip 文件加载到数据库中的 Postgres 复制命令

postgresql - 如何使用 information_schema 查询来检索函数的 search_path 集?

python - "django.db.utils.ProgrammingError: relation "app_user "does not exist"在 manage.py 测试期间

MySQL 优化 : EXPLAIN "Extra" column contains "Using Where"

performance - PostgreSQL:在所有表字段的长度上创建索引

sql-server-2008 - SQL Server 2008 : How to count all indexes on all tables in Database?

postgresql - 使用 n :m and 1:m associations and update Model 后续删除实例

ruby-on-rails - 选择 has_many 关联中持有某些条件的所有记录 - Ruby On Rails

mysql - 努力为简单的排序范围查询创建正确的索引

postgresql - Postgres 对一个非常简单的 SELECT x ... ORDER BY x 进行 Seq Scan 而不是 Index Only Scan