Поиск индексов для таблицы в Sybase - PullRequest
1 голос
/ 07 марта 2012

В настоящее время я работаю в среде, в которой меня сделали двойным слепым.

  1. Я должен отправить любые запросы по электронной почте сотруднику клиента.
  2. Этот сотрудник запускает их в клиенте SAS с подключением odbc к SyBase

Мне нужно выяснить, как точно определить, какие индексы существуют в конкретной таблице. Я бы использовал sp_helpindex, но, по-видимому, его нет на их экземпляре SyBase.

Мы верим , что это SyBase 12, но опять же я ни в чем не уверен.

У кого-нибудь есть SQL для ...
- Точно подтверждаете, над какой версией SyBase мы работаем?
Детали всех индексов, которые существуют для данной таблицы?

Ответы [ 6 ]

3 голосов
/ 24 августа 2012

Большинство продуктов Sybase имеют аргумент командной строки -v, чтобы сообщить версию с запущенным или не работающим ядром.

Чтобы найти индексы для любой таблицы, введите следующее, где my_table - имя вашей таблицы:

select i.name 
from sysindexes i, sysobjects o
where o.name = 'my_table'
  and o.id = i.id
1 голос
/ 07 марта 2012

Чтобы «Точно подтвердить, над какой версией SyBase мы работаем?»

Почему бы не использовать:

select @@ version


Сайт Sybase недоступен (по крайней мере, здесь), но это будет что-то вроде:

IQ SHOW INDEXSET INDEXES

или

IQ SHOW INDEXSET FOR indexset

, где indexset равно tablename, потому что каждая таблицаимеет набор индексов с тем же именем.

Если у вас есть доступ к сайту sybase, возможно, вы можете пойти дальше:)

0 голосов
/ 08 апреля 2019

select * from sys.sysindexes where tname='Your Table name'

Попробуйте приведенный выше код, у меня это сработало.

0 голосов
/ 08 марта 2017

Для версии Sybase:

select @@version

в версии Sybase SAP IQ / 16 вы можете получить список индексов со следующим (имя таблицы my_table чувствительно к регистру:

select *
from sys.sysindexes
where tname = 'my_table';
0 голосов
/ 04 августа 2015

Поиск индексов по нескольким таблицам, а не по индексам изображений

select name = o.name,iname = i.name from sysindexes i, sysobjects o where o.name in ('table1','table2','table3') and i.name not like 't%' and i.indid >=1 and o.id = i.id
0 голосов
/ 04 августа 2015

Вы можете использовать этот запрос:

select i.name 
from sysindexes i, sysobjects o
where o.name = 'table_name' and i.indid >=1
and o.id = i.id
...