oracle 创建、查看索引和数据量
场景
统计某个用户下面所有表的所有索引和该索引在哪个字段
统计某个用户下面所有表的数据量
创建索引
create index index_name on table_name(column_name)
删除索引
drop index index_name
创建组合索引
create index index_name on table_name(column_name_1,column_name_2);
查看索引
-- 查看某个表的索引
SELECT * from all_indexes WHERE table_name=upper('table_name');
-- 查看索引在哪个字段
select * from user_ind_columns where table_name=upper('table_name');
-- 查看某个用户下面所有的索引
SELECT * from all_indexes WHERE owner='SR';
查询某个用户下面所有表的数据量
-- 查询某个表的数据量 也就是有多少条数据
SELECT t.table_name,t.num_rows from user_tables t ORDER BY t.NUM_ROWS DESC;
-- 查询某个用户下面的表
SELECT * from all_all_tables WHERE owner='SR';
索引介绍
在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息。
当表中有大量记录时,若要对表进行查询,第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。
优点
1.大大加快数据的检索速度;
2.创建唯一性索引,保证数据库表中每一行数据的唯一性;
3.加速表和表之间的连接;
缺点
1.索引需要占物理空间。
2.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
发布简书 2019/06/10