powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Индексы для таблицы
5 сообщений из 5, страница 1 из 1
Индексы для таблицы
    #33551094
IgorK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно узнать существующие индексы для таблицы, использую только SQL?
...
Рейтинг: 0 / 0
Индексы для таблицы
    #33551302
aTz (msk)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT
  ci.relname
FROM
  pg_index i
  join pg_class ci on ci.oid = i.indexrelid
  join pg_class ct on ct.oid = i.indrelid
WHERE
  ct.relname = 'accounts'

Выведет названия индексов для таблицы c именем "accounts".
Для подробностей смотри http://www.postgresql.org/docs/8.1/interactive/catalogs.html
В моём примере не учитывается схема, в которую входит таблица, прочитав доку - узнаешь как грамотнее составить запрос и получить доп.информацию по каждому индексу
...
Рейтинг: 0 / 0
Индексы для таблицы
    #33551316
domanix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT ic.oid,pg_get_indexdef(ic.oid),ic.relname AS name, am.amname, i.indisprimary AS pri,
i.indisunique AS uni, i.indkey AS fields, i.indclass AS fopclass,
i.indisclustered, ic.oid AS indid, c.oid AS relid, ds.description,
u.usename, pg_get_expr(i.indexprs, i.indrelid) AS expr,
ts.spcname, pg_get_expr(i.indpred, i.indrelid) AS wh,
cn.oid IS NOT NULL AS iscn, cn.oid as constroid
FROM pg_index i INNER JOIN pg_class c ON i.indrelid = c.oid
INNER JOIN pg_class ic ON i.indexrelid = ic.oid
INNER JOIN pg_am am ON ic.relam = am.oid
LEFT OUTER JOIN pg_description ds ON ds.objoid = ic.oid
LEFT OUTER JOIN pg_user u ON u.usesysid = ic.relowner
LEFT OUTER JOIN pg_constraint cn ON i.indrelid = cn.conrelid AND ic.relname = cn.conname
LEFT OUTER JOIN pg_tablespace ts ON ts.oid = ic.reltablespace
WHERE
c.oid = ('TYPE_TABLE_NAME_HERE')::regclass::oid

ORDER BY ic.relname
...
Рейтинг: 0 / 0
Индексы для таблицы
    #33551332
aTz (msk)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть ещё СИСТЕМНЫЕ вьюшки, не помню с какой версии они существуют, тебе нужна под названием pg_indexes, там всё просто, пример

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT
  schemaname,
  tablename,
  indexname,
  indexdef
FROM
  pg_indexes
WHERE
  tablename = 'accounts' AND schemaname = 'myschema'
...
Рейтинг: 0 / 0
Индексы для таблицы
    #33552507
IgorK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот за вьюшки спасибо!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Индексы для таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]