首页数据库查看数据库索引(怎么查看表的索引mysql)

查看数据库索引(怎么查看表的索引mysql)

编程之家2023-10-1997次浏览

大家好,查看数据库索引相信很多的网友都不是很明白,包括怎么查看表的索引mysql也是一样,不过没有关系,接下来就来为大家分享关于查看数据库索引和怎么查看表的索引mysql的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

查看数据库索引(怎么查看表的索引mysql)

如何查询Oracle数据库中已经创建的索引

oracle对于数据库中的表信息,存储在系统表中。查询已创建好的表索引,可通过相应的sql语句到相应的表中进行快捷的查询:

1.根据表名,查询一张表的索引

select* from user_indexes where table_name=upper('表名');

2.根据索引号,查询表索引字段

select* from user_ind_columns where index_name=('索引名');

3.根据索引名,查询创建索引的语句

查看数据库索引(怎么查看表的索引mysql)

select dbms_metadata.get_ddl('INDEX','索引名', ['用户名']) from dual;--['用户名']可省,默认为登录用户

PS:dbms_metadata.get_ddl还可以得到建表语句,如:

SELECT DBMS_METADATA.GET_DDL('TABLE','表名', ['用户名']) FROM DUAL;//取单个表的建表语句,['用户名']可不输入,默认为登录用户

SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;//取用户下所有表的建表语句

当然,也可以用pl/sql developer工具来查看相关的表的各种信息。

怎么查看表的索引mysql

查看索引的语法格式如下:

查看数据库索引(怎么查看表的索引mysql)

SHOW INDEX FROM<表名> [ FROM<数据库名>]

语法说明如下:

<表名>:指定需要查看索引的数据表名。

<数据库名>:指定需要查看索引的数据表所在的数据库,可省略。比如,SHOW INDEX FROM student FROM test;语句表示查看 test数据库中 student数据表的索引。

示例

使用 SHOW INDEX语句查看《MySQL创建索引》一节中 tb_stu_info2数据表的索引信息,SQL语句和运行结果如下所示。

mysql> SHOW INDEX FROM tb_stu_info2\G

1. row

Table: tb_stu_info2

Non_unique: 0

Key_name: height

Seq_in_index: 1

Column_name: height

Collation: A

Cardinality: 0

Sub_part: NULL

Packed: NULL

Null: YES

Index_type: BTREE

Comment:

Index_comment:

1 row in set(0.03 sec)

其中各主要参数说明如下:

参数说明

Table表示创建索引的数据表名,这里是 tb_stu_info2数据表。

Non_unique表示该索引是否是唯一索引。若不是唯一索引,则该列的值为 1;若是唯一索引,则该列的值为 0。

Key_name表示索引的名称。

Seq_in_index表示该列在索引中的位置,如果索引是单列的,则该列的值为 1;如果索引是组合索引,则该列的值为每列在索引定义中的顺序。

Column_name表示定义索引的列字段。

Collation表示列以何种顺序存储在索引中。在 MySQL中,升序显示值“A”(升序),若显示为 NULL,则表示无分类。

Cardinality索引中唯一值数目的估计值。基数根据被存储为整数的统计数据计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机会就越大。

Sub_part表示列中被编入索引的字符的数量。若列只是部分被编入索引,则该列的值为被编入索引的字符的数目;若整列被编入索引,则该列的值为 NULL。

Packed指示关键字如何被压缩。若没有被压缩,值为 NULL。

Null用于显示索引列中是否包含 NULL。若列含有 NULL,该列的值为 YES。若没有,则该列的值为 NO。

Index_type显示索引使用的类型和方法(BTREE、FULLTEXT、HASH、RTREE)。

Comment显示评注。

oracle数据库中如何查看已经创建的索引信息

oracle对于数据库中的表信息,存储在系统表中。查询已创建好的表索引,可通过相应的sql语句到相应的表中进行快捷的查询:

1.根据表名,查询一张表的索引

select*fromuser_indexeswheretable_name=upper('表名');

2.根据索引号,查询表索引字段

select*fromuser_ind_columnswhereindex_name=('索引名');

3.根据索引名,查询创建索引的语句

selectdbms_metadata.get_ddl('INDEX','索引名',['用户名'])fromdual;--['用户名']可省,默认为登录用户

PS:dbms_metadata.get_ddl还可以得到建表语句,如:

SELECTDBMS_METADATA.GET_DDL('TABLE','表名',['用户名'])FROMDUAL;//取单个表的建表语句,['用户名']可不输入,默认为登录用户

SELECTDBMS_METADATA.GET_DDL('TABLE',u.table_name)FROMUSER_TABLESu;//取用户下所有表的建表语句

当然,也可以用pl/sql developer工具来查看相关的表的各种信息。

数据库索引有哪几种怎样建立索引

种类:

1、按照索引列值的唯一性,索引可分为唯一索引和非唯一索引;

非唯一索引:

create index索引名 on表名(列名) tablespace表空间名;

唯一索引:

建立主键或者唯一约束时会自动在对应的列上建立唯一索引;

2、索引列的个数:单列索引和复合索引;

3、按照索引列的物理组织方式。

索引的创建格式:

CREATEUNIUQE|BITMAPINDEX<schema>.<index_name>ON<schema>.<table_name>(<column_name>|<expression>ASC|DESC,<column_name>|<expression>ASC|DESC,...)TABLESPACE<tablespace_name>STORAGE<storage_settings>LOGGING|NOLOGGINGCOMPUTESTATISTICSNOCOMPRESS|COMPRESS<nn>NOSORT|REVERSEPARTITION|GLOBALPARTITION<partition_setting>

使用USER_IND_COLUMNS查询某个TABLE中的相应字段索引建立情况

使用DBA_INDEXES/USER_INDEXES查询所有索引的具体设置情况。

在Oracle中的索引可以分为:B树索引、位图索引、反向键索引、基于函数的索引、簇索引、全局索引、局部索引等,下面逐一讲解:

一、B树索引:

最常用的索引,各叶子节点中包括的数据有索引列的值和数据表中对应行的ROWID,简单的说,在B树索引中,是通过在索引中保存排过续的索引列值与相对应记录的ROWID来实现快速查询的目的。其逻辑结构如图:

可以保证无论用户要搜索哪个分支的叶子结点,都需要经过相同的索引层次,即都需要相同的I/O次数。

B树索引的创建示例:

create index ind_t on t1(id);

注1:索引的针对字段创建的,相同字段不能创建一个以上的索引;

注2:默认的索引是不唯一的,但是也可以加上unique,表示该索引的字段上没有重复值(定义unique约束时会自动创建);

注3:创建主键时,默认在主键上创建了B树索引,因此不能再在主键上创建索引。

二、位图索引:

有些字段中使用B树索引的效率仍然不高,例如性别的字段中,只有“男、女”两个值,则即便使用了B树索引,在进行检索时也将返回接近一半的记录。

所以当字段的基数很低时,需要使用位图索引。(“低”的标准是取值数量<行数*1%)

位图索引的逻辑结构如上图所示:索引中不再记录rowid和键值,而是将每个值作为一列,用0和1表示该行是否等于该键值(0表示否;1表示是)。其中位图索引的行顺序与原表的行顺序一致,可以在查询数据的过程中对应计算出行的原始物理位置。

位图索引的创建示例:

create bitmap index ind_t on t1(type);

注:位图索引不可能是唯一索引,也不能进行键值压缩。

三、反向键索引:

考虑这个情况:某一字段的值是1-1000顺序排列,建立B树索引后依旧递增,到后来该B数索引不断在后面增加分支,会形成如下如的不对称树:

反向键索引是一种特殊的B树索引,在存储构造中与B树索引完全相同,但是针对数值时,反向键索引会先反向每个键值的字节,然后对反向后的新数据进行索引。例如输入2008则转换为8002,这样当数值一次增加时,其反向键在大小中的分布仍然是比较平均的。

反向键索引的创建示例:

createindex ind_t on t1(id) reverse;

注:键的反转由系统自行完成。对于用户是透明的。

四、基于函数的索引:

有的时候,需要进行如下查询:select* from t1 where to_char(date,'yyyy')>'2007';

但是即便在date字段上建立了索引,还是不得不进行全表扫描。在这种情况下,可以使用基于函数的索引。其创建语法如下:

create index ind_t on t1(to_char(date,'yyyy'));

注:简单来说,基于函数的索引,就是将查询要用到的表达式作为索引项。

五、全局索引和局部索引:

这个索引貌似很复杂,其实很简单。总得来说一句话,就是无论怎么分区,都是为了方便管理。

具体索引和表的关系有三种:

1、局部分区索引:分区索引和分区表1对1

2、全局分区索引:分区索引和分区表N对N

3、全局非分区索引:非分区索引和分区表1对N

创建示例:

首先创建一个分区表

createtable student

(

stuno number(5),

sname vrvhar2(10),

deptno number(5)

)

partition by hash(deptno)

(

partition part_01 tablespace A1,

partition part_02 tablespace A2

);

创建局部分区索引(1v1):

create index ind_t on student(stuno)

local(

partition part_01 tablespace A2,

partition part_02 tablespace A1

);--local后面可以不加

创建全局分区索引(NvN):

create index ind_t on student(stuno)

globalpartition by range(stuno)

(

partition p1 values less than(1000) tablespace A1,

partition p2 values less than(maxvalue) tablespace A2

);--只可以进行range分区

创建全局非分区索引(1vN)

createindex ind_t on student(stuno) GLOBAL;

查看数据库索引的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于怎么查看表的索引mysql、查看数据库索引的信息别忘了在本站进行查找哦。

主机启动不了电源不亮 电脑主机灯不亮也启动不了是怎么回事金河田主机(金河田机箱怎么样)