【发布时间】:2011-01-13 07:51:44
【问题描述】:
我想在 PostgreSQL 中获取索引所在的列。
在 MySQL 中,您可以使用 SHOW INDEXES FOR table 并查看 Column_name 列。
mysql> show indexes from foos;
+-------+------------+---------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------+------------+---------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| foos | 0 | PRIMARY | 1 | id | A | 19710 | NULL | NULL | | BTREE | |
| foos | 0 | index_foos_on_email | 1 | email | A | 19710 | NULL | NULL | YES | BTREE | |
| foos | 1 | index_foos_on_name | 1 | name | A | 19710 | NULL | NULL | | BTREE | |
+-------+------------+---------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
PostgreSQL 有类似的东西吗?
我在psql 命令提示符下尝试了\d(使用-E 选项来显示SQL),但它没有显示我正在寻找的信息。
更新:感谢所有添加答案的人。 cope360 给了我我想要的东西,但是有几个人附和了非常有用的链接。为了将来参考,请查看pg_index(通过Milen A. Radev)的文档和非常有用的文章Extracting META information from PostgreSQL(通过Michał Niklas)。
【问题讨论】:
-
澄清一下:您希望您的程序能够在运行时确定哪些列被索引,对吧?与你相反的编程知识。
-
是的,正确的。理想情况下,我想要一个仅列出索引所在列的 SQL 语句。但我知道 PostgreSQL 比 MySQL 更复杂,索引可能在函数上,等等。
标签: sql postgresql indexing