Ни в одной таблице не найдено индексов - возможно ли это? - PullRequest
0 голосов
/ 06 сентября 2011

Выполнив следующую команду, которая выведет список всех индексов, найденных в моей схеме, запрос ничего не возвратил - предполагая, что либо индекс не создан, либо, возможно, у меня недостаточно прав.

select * from user_indexes;

Есть ли еще способы перечислить индексы, которые у меня есть в схеме?

Ответы [ 3 ]

5 голосов
/ 06 сентября 2011

Конечно, это возможно.

Обычное, четное:)

Это просто означает, что никто не создал никаких индексов.

Если запрос ничего не дал, это значит, что у вас действительно есть разрешение ... и индексов просто нет.

Вот хорошая ссылка на «Управление индексами в Oracle» (похоже, вы используете Oracle):

http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/indexes.htm

1 голос
/ 06 сентября 2011

Как говорит paulsm4, в вашей схеме нет индексов.

вы можете использовать

select * from all_indexes;

и вы увидите все свои индексы + другие, на которые у вас есть права.

0 голосов
/ 11 сентября 2011

Florin верен, USER_INDEXES - это представление ALL_INDEXES, которое показывает только те, которые были созданы вами. Вы можете напрямую запросить ALL_INDEXES, чтобы определить, создал ли кто-либо еще индексы для рассматриваемой таблицы, но вы, вероятно, захотите добавить предложение where для table_name, поскольку в нем будут перечислены все индексы для всех таблиц в экземпляре, а также только некоторые столбцы .

SELECT TABLE_NAME, INDEX_NAME FROM ALL_INDEXES WHERE TABLE_NAME='XYZ';

Вы можете ограничить, какие таблицы, используя IN CLAUSE, если есть несколько таблиц, которые вас интересуют

SELECT TABLE_NAME, INDEX_NAME FROM ALL_INDEXES WHERE TABLE_NAME IN ('ABC','XYZ');

и вы можете использовать предложение like, если есть префикс или суффикс

SELECT TABLE_NAME, INDEX_NAME FROM ALL_INDEXES WHERE TABLE_NAME like 'XYZ%';

Кроме того, если вы хотите увидеть, к каким столбцам относятся эти индексы, вы можете выбрать из ALL_IND_COLUMNS;

SELECT * FROM ALL_IND_COLUMNS WHERE TABLE_NAME='XYZ'

Обратите внимание, что таблица имеет индексы или нет, зависит от данных и использования. Для небольшой справочной таблицы, которая может иметь сотню строк или меньше, индекс не нужен, тогда как для таблицы, содержащей миллионы строк, но при необходимости запрашивается лишь небольшая часть, нужен индекс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...