对于特殊字段,比如外键,主键,在不知道外键主键名的情况下,需要如下操作
select constrname from sysconstraints where constrtype='R' and tabid= ( select tabid from systables where tabname = 'tst_1' ) ;   ----'R'查找外键,'P'查找主键
------针对informix数据库-----------------------------------------------------------   
ALTER   TABLE   yourtable   DROP   CONSTRAINT   constrname;   
yourtable   :你要删除的约束所在的表名称;   
constrname   :你要删除的约束名称;   
constrname的获得:   
在informix数据库中有一个系统表:sysconstraints   
该表中存储了数据库所有的约束的基本信息:   
constrid   :约束标示   
constrname   :约束名称   
owner   :owner的用户名称   
tabid   :表标示   
constrtype   :约束类型   
          取值:C(check   constraint)、P(Primary   key)、R(Referential)、U(Unique)、N(Not   Null)其中R则是你所需要的。   
idxname   :索引名称   
根据tabid从另一个系统表systables中检索tabname。

希望对你有帮助。

 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
 
对于特殊字段,比如外键,主键,在不知道外键主键名的情况下,需要如下操作
select constrname from sysconstraints where constrtype='R' and tabid= ( select tabid from systables where tabname = 'tst_1' ) ;   ----'R'查找外键,'P'查找主键
------针对informix数据库-----------------------------------------------------------   
ALTER   TABLE   yourtable   DROP   CONSTRAINT   constrname;   
yourtable   :你要删除的约束所在的表名称;   
constrname   :你要删除的约束名称;   
constrname的获得:   
在informix数据库中有一个系统表:sysconstraints   
该表中存储了数据库所有的约束的基本信息:   
constrid   :约束标示   
constrname   :约束名称   
owner   wner的用户名称   
tabid   :表标示   
constrtype   :约束类型   
          取值:C(check   constraint)、P(Primary   key)、R(Referential)、U(Unique)、N(Not   Null)其中R则是你所需要的。   
idxname   :索引名称   
根据tabid从另一个系统表systables中检索tabname
 
 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------

--查看索引定义
select dbms_metadata.get_ddl('INDEX','IDX_PG_HY_YDNSRXX_PGFAXH') from dual;

--在某个用户下找所有的索引     
    
  select   user_indexes.table_name,   user_indexes.index_name,uniqueness,   column_name     
  from   user_ind_columns,   user_indexes     
  where   user_ind_columns.index_name   =   user_indexes.index_name     
  and   user_ind_columns.table_name   =   user_indexes.table_name     
  order   by   user_indexes.table_type,   user_indexes.table_name,     
  user_indexes.index_name,   column_position;

--查看索引

select   INDEX_NAME,table_name ,COLUMN_NAME,INDEX_OWNER  from   dba_ind_columns   where   TABLE_NAME='PG_HY_YDNSRXX';  
 
--查找所有索引

select   *   from   all_indexes;

----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
 
讨论这个之前;需要跟大家提到一个概念-“主键”;其实主键是一种特殊的唯一索引;当建立一个主键是;在系统中其实建立了一个不能为空的唯一索引。他和唯一索引的区别也就是不能为空这么一点了。因此他能做到唯一识别表中的一条记录的作用。索引都有索引名在create index  idx-name中定义;主键在定义是没有指定名称;但实际上系统会给自动命名一个unnn_nnn【n为数字】的一个名字。可以通过如下语句查得:【如查basetab_pps主键名字】

select constrname  from sysconstraints
where tabid in (select tabid from systables where tabname='basetab_pps');

下面可以谈谈如何恢复损坏得索引了:

1、  如果是普通得索引。这样就相对得简单了;删除并重建他就可以了。

drop  index  idx-name;
create index   idx-name  on  tabname(colname1,colname2…);

2、  如果是主键损坏;同样可以删除并重建他。

A、    删除主键
select constrname  from sysconstraints 
where tabid in (select tabid from systables where tabname='tabname');
alter  table  tabname  drop  constraint  cons_name;

B、 重建主键
alter table   basetab_pps  add  constraint primary key (colname1,colname2…);

3、如果重建都有问题;那么最后一招;只有将表重建了。导出数据和建表语句;删除表、重建表、重建索引。。。

关于索引的问题最后讨论一下;统计更新【upadte statistics】的作用

举个简单的例子:

试验一:
在dbaccess 中执行如下操作:
drop table t1 
create table t1 (c1  int,c2 char(10));
create  index i_t1 on t1 (c1);
insert into t1 values (1,1);
insert into t1 values (2,1);
insert into t1 values (3,1);

set explain on   --
select * from t1 where c1 = 2;

在运行目录下的sqexplain.out文件中看到:

QUERY:

------

select * from t1 where c1 = 2
Estimated Cost: 2
Estimated # of Rows Returned: 2
1) smpmml.t1: SEQUENTIAL SCAN
    Filters: smpmml.t1.c1 = 2

试验二:
在dbaccess 中执行如下操作:
drop table t1 
create table t1 (c1  int,c2 char(10));
create  index i_t1 on t1 (c1);
insert into t1 values (1,1);
insert into t1 values (2,1);
insert into t1 values (3,1);

update statistics for table t1;
set explain on 
select * from t1 where c1 = 2;

在运行目录下的sqexplain.out文件中看到:

QUERY:
------
select * from t1 where c1 = 2
Estimated Cost: 1
Estimated # of Rows Returned: 1

1) smpmml.t1: INDEX PATH
    (1) Index Keys: c1
       Lower Index Filter: smpmml.t1.c1 = 2

试验三:
在dbaccess 中执行如下操作:
drop table t1 
create table t1 (c1  int,c2 char(10));
create unique index i_t1 on t1 (c1);
insert into t1 values (1,1);
insert into t1 values (2,1);
insert into t1 values (3,1);

set explain on 
select * from t1 where c1 = 2;

在运行目录下的sqexplain.out文件中看到:
QUERY:
------
select * from t1 where c1 = 2
Estimated Cost: 2
Estimated # of Rows Returned: 1

1) smpmml.t1: INDEX PATH
    (1) Index Keys: c1
       Lower Index Filter: smpmml.t1.c1 = 2

分析一下:
试验一:建立了一般的索引;对按索引字段进行搜索;但是没有用到刚建立起来的索引。按全表扫描SEQUENTIAL SCAN进行查找。
试验二:建立了一般的索引;并且进行了统计更新后;对按索引字段进行搜索;使用到建立起来的索引。INDEX PATH
试验三:建立了唯一索引;对按索引字段进行搜索;使用到了刚建立起来的索引。INDEX PATH;显然如果建立了主键【特殊的唯一索引】;现象将是一样的。
    我们可以这样说;如果建立了主键或唯一索引;立马就能生效;这也是我们在WIN的安装、升级或维护过程中建立了一些表没有做统计更新同样能用到索引的原因。而如果建立的不是唯一索引;就需要执行统计更新才能用到索引。

实际上统计更新除了能决定是否使用到索引外;还有使用这些统计信息如何使用索引及其他方式进行查询的目的。具体如何使用这些信息来决定查询路径就比较底层了。只知道通过执行update statistics命令,就可以使系统表systables、sysdistrib、syscolumns、sysindexes等表内的记录数、表空间的页数、记录长度、字段不同值个数、字段值的分布、索引的层数等信息得到更新。而服务器在进行语法分析后能通过查询优化器根据这些统计信息找到最有效的执行SQL的路径。

 
 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
 
  systables:描述数据库中的很张表;   
  syscolumns:描述数据库中表的列;   
  sysindexes:描述数据库中列的索引;   
  sysfragments:存储了分段索引的片段信息;   
  sysfragauth:表识别列级权限;   
  sysviews:描述了数据库中定义的每个视图;   
  sysdpend:描述了视图是如何依赖其他视图和表的;   
  syssyntable:定义每一个同义词及其所代表的对象;   
  sysconstraints:记录了加载在数据库表列上的约束;   
  sysreferences:列出了放置在数据库上的参照约束,它为数据库的每个参照约束建立一行   
  syscoldepend:记录了涉及检查约束的所有列,包括在约束中每列都会在syscoldepend表中创建一行;   
  sysprocedures:存放数据库中每个过程的特征;   
  sysprocplan:装载了过程执行所需的两项内容(执行计划或查询计划、附属列表);   
  sysprocauth:描述授予存储过程的权限;   
  systriggers:装载了关于触发器的信息;   
  sysblobs:确定BLOB列的存储位置;   
  sysroleauth:描述授予用户的角色;   
  sysobjstate:存储了关于数据库对象的状态信息;   
  sysvlolations:违例或诊断表; 
  sysdefaults:描述数据库中表的列的默认值;
 
 
 
 
 
 

informix建临时表索引的更多相关文章

  1. SQL 语句调优 where 条件 数据类型 临时表 索引

    基本原则 避免全表扫描 建立索引 尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理 尽量避免大事务操作,提高系统并发能力 使用基于游标的方法或临时表方法之前,应先寻找基于集的解决方 ...

  2. SAP建数据库索引

    [转]SAP建数据库索引   %_hints  db6 'INDEX("MKPF","MKPF~BUD")'           db6 'INDEX(&quo ...

  3. MySQL巧建sum索引帮我们提高至少100%的效率

    有两个表,表a CREATE TABLE `a` ( `id` mediumint() unsigned NOT NULL AUTO_INCREMENT, `fid` ) unsigned ', `c ...

  4. Mysql建了索引查询很慢

    遇到一个问题,有几个结构一个的查询,表的索引建的也一样,但是有的查询很快,有的却很慢,需要半分钟以上才能执行完. 查看执行计划,并没有什么区别.找了很久原因才发现是主查询和子查询所涉及的表的字符编码不 ...

  5. 如何加快建 index 索引 的时间

    朋友在500w的表上建索引,半个小时都没有结束.所以就讨论如何提速. 一.先来看一下创建索引要做哪些操作:1. 把index key的data 读到内存==>如果data 没在db_cache ...

  6. Oracle不能并行直接添加主键的方法:先建唯一索引后建主键

    环境:Oracle 11.2.0.3 需求:生产一张表由于前期设计不当,没有主键.现需要添加主键,数据量很大,想并行建立. 1.直接添加,提示ora-3001:未实施的功能;只能单线程建立主键 SQL ...

  7. SQL 数据优化索引建suo避免全表扫描

    首先什么是全表扫描和索引扫描?全表扫描所有数据过一遍才能显示数据结果,索引扫描就是索引,只需要扫描一部分数据就可以得到结果.如果数据没建立索引. 无索引的情况下搜索数据的速度和占用内存就会比用索引的检 ...

  8. 高性能MySQL--创建高性能的索引

    关于MySQL的优化,相信很多人都听过这一条:避免使用select *来查找字段,而是要在select后面写上具体的字段. 那么这么做的原因相信大家都应该知道:减少数据量的传输. 但我要讲的是另外一个 ...

  9. SQL通用优化方案(where优化、索引优化、分页优化、事务优化、临时表优化)

    SQL通用优化方案:1. 使用参数化查询:防止SQL注入,预编译SQL命令提高效率2. 去掉不必要的查询和搜索字段:其实在项目的实际应用中,很多查询条件是可有可无的,能从源头上避免的多余功能尽量砍掉, ...

随机推荐

  1. 博客搬到CSDN了,以后就老实的呆在这儿吧~~

    几年前读书的时候就自己在做独立的个人博客网站,重做 + 改版好多次,域名也换了好几个- 163fly.com.godbz.com.zhouz.me ... 都是我曾经用过的域名,都放弃了- 发现到头来 ...

  2. 小程序 - pages/list/list出现脚本错误或者未正确调用 Page()

    这种情况的原因是在要跳转到的页面的js文件中未建立Page()方法,如下: Page({ data: { logs: [] }}) 把以上信息写在js文件即可.

  3. 简单的python协同过滤程序

    博主是自然语言处理方向的,不是推荐系统领域的,这个程序完全是为了应付大数据分析与计算的课程作业所写的一个小程序,先上程序,一共55行.不在意细节的话,55行的程序已经表现出了协同过滤的特性了.就是对每 ...

  4. PAT乙级1002. 写出这个数 (20)

    读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字之和的每 ...

  5. String、StringBuffer和StringBuilder区别及性能分析

    1.性能比较:StringBuilder >  StringBuffer  >  String 2.String <(StringBuffer,StringBuilder)的原因 S ...

  6. html5的116个标签

    基础   标签 描述 <!DOCTYPE> 定义文档类型. <html> 定义 HTML 文档. <title> 定义文档的标题. <body> 定义文 ...

  7. iOSAPP添加启动页

    如果你在开发过程中出现屏幕显示内容比例不正常或者显示不全的问题,你发现不是代码或者约束的问题,那么很可能是启动页没有添加或者添加不全的原因,下面配一张问题图片上下黑屏 添加启动页步骤如下图 (1) ( ...

  8. maven构建这么慢,怎么改变?

    Apache Maven是当今非常流行的项目构建和管理工具,它把开发人员从繁杂的项目依赖关系处理事务中解放出来,完全自动化管理依赖问题.在Web应用开发过程中,通常我们会用到maven的archety ...

  9. Leetcode - 186 Reverse Words in a String II

    题目: Given an input string, reverse the string word by word. A word is defined as a sequence of non-s ...

  10. Jquery实现双击表单元格可编辑

    <script type="text/javascript"> function doTableTdEditClick(param){ doTdEditable(par ...