2012-03-07 62 views
1

我目前正在使用雙盲的環境中工作。在Sybase中查找索引表

  1. 我有電子郵件,我需要運行在客戶端
  2. 該員工運行它們在SAS客戶的員工有任何疑問,與到Sybase

的ODBC連接,我需要找到了解如何確切地確定特定表格上存在哪些索引。我會使用sp_helpindex,但顯然它不存在於SyBase的實例中。

我們相信它是SyBase 12,但我再也不能確定任何東西。

有沒有人有SQL ...
- 確認我們正在使用的SyBase的版本是什麼?
- 給定表的所有索引的詳細信息?

回答

1

要「確切確認我們正在處理的SyBase的版本是什麼?」

爲什麼不使用:

SELECT @@ VERSION


的Sybase網站已關閉(至少在這裏),但它會是這樣的:

IQ SHOW INDEXSET INDEXES 

IQ SHOW INDEXSET FOR indexset 

其中indexsettablename,因爲每個表都有一個索引集分配了相同的名稱。

如果你有機會到Sybase網站可能你可以走的更遠:)

+0

感謝這一點,雖然看起來它的失敗是由於其他系統SP失蹤。我想我的客戶會更喜歡我簡單*使用Force * :) – MatBailie 2012-03-07 11:23:35

+0

@Dems是的這是我的雖然它會發生^^但是,你知道哪個版本是? – 2012-03-07 12:57:41

+0

近5個小時才知道,但我明白了! 'Sybase IQ/12.7.0/100114/P/ESD 9/Enterprise Linux64 - amd64,Opteron64,X86_64/2.4.21-27.0.1.ELsmp/64bit/2010-01-14 10:20:04' – MatBailie 2012-03-07 15:43:37

2

大多數Sybase產品有-v命令行參數告訴版本,帶或不帶發動機運轉。

要查找任何表的索引中輸入以下內容,其中my_table是你的表的名稱:

select i.name 
from sysindexes i, sysobjects o 
where o.name = 'my_table' 
    and o.id = i.id 
0

您可以使用此查詢:

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

的多個表查找索引,不喜歡圖像索引

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

對於sybase版本:

select @@version 
在Sybase版本SAP IQ/16

,你可以得到的索引列表與以下(表名MY_TABLE區分大小寫:

select * 
from sys.sysindexes 
where tname = 'my_table';