数据库优化知识
来源:互联网 发布:u盘物理损坏数据恢复 编辑:程序博客网 时间:2024/05/16 11:01
1 可以为空的列在创建索引的时候不能生效
2 强制使用索引,select /*index(table_name index_name)*/ col1,col2 from table。
3 相同的group by语句可以合并查询。
4 分表使用union all
5 alter index idx_name rebuild parallel 8; 数字代表模拟电脑核数。
6 建立中间表
7 充足的表空间
8 in换成inner join
9 select count(*)就不能利用到这个索引,因为null的记录不会进入索引,空值较多的字段不建议建索引。
10 查看系统索引空间使用情况 select * from dba_indexes;
11 整理表空间的碎片alter tablespace 表空间名 coalesce
12 找出有碎片的表空间,并收集其碎片。
重建索引后,原有的索引被删除,这样会造成表空间的碎片。
select 'alter tablespace '||tablespace_name||' coalesce;' from dba_free_space_coalesced where percent_blocks_coalesced!=100
13 根据索引进行查询,检查索引是否有效.使用相应的where条件进行查询,确保使用该索引。看看使用索引后的效果如何
select * from dba_ind_columns where index_name like '表名%'
14 检查索引,对重建好的索引进行检查。
select * from dba_extents where segment_name='索引名';段和区空间进行检查。
15 查看表空间使用了哪些索引 ; from dba_segments
16 如果出于空间或其他考虑,不能重建索引,可以整理索引:alter index 用户名.索引名 coalesce
17 如果索引的叶子行的碎片超过10%,考虑对索引进行重建。
alter index 用户名.索引名 rebuild tablespace 表空间名 storage(initial 初始值 next 扩展值) nologging
18 查询index_stats表以确定索引中删除的、未填满的叶子行的百分比。
19 分区是构建千兆字节数据系统或超高可用性系统的关键工具;
什么时候使用分区表:
1、表的大小超过2GB。
2、表中包含历史数据,新的数据被增加都新的分区中。
20 --显示数据库所有分区表的信息:
select * from DBA_PART_TABLES
--显示当前用户可访问的所有分区表信息:
select * from ALL_PART_TABLES
--显示当前用户所有分区表的信息:
select * from USER_PART_TABLES
--显示表分区信息 显示数据库所有分区表的详细分区信息:
select * from DBA_TAB_PARTITIONS
--显示当前用户可访问的所有分区表的详细分区信息:
select * from ALL_TAB_PARTITIONS
--显示当前用户所有分区表的详细分区信息:
select * from USER_TAB_PARTITIONS
--显示子分区信息 显示数据库所有组合分区表的子分区信息:
select * from DBA_TAB_SUBPARTITIONS
--显示当前用户可访问的所有组合分区表的子分区信息:
select * from ALL_TAB_SUBPARTITIONS
--显示当前用户所有组合分区表的子分区信息:
select * from USER_TAB_SUBPARTITIONS
--显示分区列 显示数据库所有分区表的分区列信息:
select * from DBA_PART_KEY_COLUMNS
--显示当前用户可访问的所有分区表的分区列信息:
select * from ALL_PART_KEY_COLUMNS
--显示当前用户所有分区表的分区列信息:
select * from USER_PART_KEY_COLUMNS
--显示子分区列 显示数据库所有分区表的子分区列信息:
select * from DBA_SUBPART_KEY_COLUMNS
--显示当前用户可访问的所有分区表的子分区列信息:
select * from ALL_SUBPART_KEY_COLUMNS
--显示当前用户所有分区表的子分区列信息:
select * from USER_SUBPART_KEY_COLUMNS
--怎样查询出oracle数据库中所有的的分区表
select * from user_tables a where a.partitioned='YES'
--删除一个表的数据是
truncate table table_name;
--删除分区表一个分区的数据是
alter table table_name truncate partition p5;
21 数据库存储单位:
1、数据块Block是Oracle存储数据信息的最小单位
2、区extent是比数据块大一级的存储结构
3、数据段segment是与数据库对象相对应,多个extent是对应一个数据段
4、TableSpace是存储结构中的最高层结构,表空间是可以跨物理存储的
5、一个user对应的就是一个schema
索引和表尽量不要建立在一个表空间下,否则影响io查询。
2 强制使用索引,select /*index(table_name index_name)*/ col1,col2 from table。
3 相同的group by语句可以合并查询。
4 分表使用union all
5 alter index idx_name rebuild parallel 8; 数字代表模拟电脑核数。
6 建立中间表
7 充足的表空间
8 in换成inner join
9 select count(*)就不能利用到这个索引,因为null的记录不会进入索引,空值较多的字段不建议建索引。
10 查看系统索引空间使用情况 select * from dba_indexes;
11 整理表空间的碎片alter tablespace 表空间名 coalesce
12 找出有碎片的表空间,并收集其碎片。
重建索引后,原有的索引被删除,这样会造成表空间的碎片。
select 'alter tablespace '||tablespace_name||' coalesce;' from dba_free_space_coalesced where percent_blocks_coalesced!=100
13 根据索引进行查询,检查索引是否有效.使用相应的where条件进行查询,确保使用该索引。看看使用索引后的效果如何
select * from dba_ind_columns where index_name like '表名%'
14 检查索引,对重建好的索引进行检查。
select * from dba_extents where segment_name='索引名';段和区空间进行检查。
15 查看表空间使用了哪些索引 ; from dba_segments
16 如果出于空间或其他考虑,不能重建索引,可以整理索引:alter index 用户名.索引名 coalesce
17 如果索引的叶子行的碎片超过10%,考虑对索引进行重建。
alter index 用户名.索引名 rebuild tablespace 表空间名 storage(initial 初始值 next 扩展值) nologging
18 查询index_stats表以确定索引中删除的、未填满的叶子行的百分比。
19 分区是构建千兆字节数据系统或超高可用性系统的关键工具;
什么时候使用分区表:
1、表的大小超过2GB。
2、表中包含历史数据,新的数据被增加都新的分区中。
20 --显示数据库所有分区表的信息:
select * from DBA_PART_TABLES
--显示当前用户可访问的所有分区表信息:
select * from ALL_PART_TABLES
--显示当前用户所有分区表的信息:
select * from USER_PART_TABLES
--显示表分区信息 显示数据库所有分区表的详细分区信息:
select * from DBA_TAB_PARTITIONS
--显示当前用户可访问的所有分区表的详细分区信息:
select * from ALL_TAB_PARTITIONS
--显示当前用户所有分区表的详细分区信息:
select * from USER_TAB_PARTITIONS
--显示子分区信息 显示数据库所有组合分区表的子分区信息:
select * from DBA_TAB_SUBPARTITIONS
--显示当前用户可访问的所有组合分区表的子分区信息:
select * from ALL_TAB_SUBPARTITIONS
--显示当前用户所有组合分区表的子分区信息:
select * from USER_TAB_SUBPARTITIONS
--显示分区列 显示数据库所有分区表的分区列信息:
select * from DBA_PART_KEY_COLUMNS
--显示当前用户可访问的所有分区表的分区列信息:
select * from ALL_PART_KEY_COLUMNS
--显示当前用户所有分区表的分区列信息:
select * from USER_PART_KEY_COLUMNS
--显示子分区列 显示数据库所有分区表的子分区列信息:
select * from DBA_SUBPART_KEY_COLUMNS
--显示当前用户可访问的所有分区表的子分区列信息:
select * from ALL_SUBPART_KEY_COLUMNS
--显示当前用户所有分区表的子分区列信息:
select * from USER_SUBPART_KEY_COLUMNS
--怎样查询出oracle数据库中所有的的分区表
select * from user_tables a where a.partitioned='YES'
--删除一个表的数据是
truncate table table_name;
--删除分区表一个分区的数据是
alter table table_name truncate partition p5;
21 数据库存储单位:
1、数据块Block是Oracle存储数据信息的最小单位
2、区extent是比数据块大一级的存储结构
3、数据段segment是与数据库对象相对应,多个extent是对应一个数据段
4、TableSpace是存储结构中的最高层结构,表空间是可以跨物理存储的
5、一个user对应的就是一个schema
索引和表尽量不要建立在一个表空间下,否则影响io查询。
阅读全文
0 0
- 数据库优化知识
- 数据库优化知识
- 数据库优化知识
- 数据库优化知识
- 数据库知识补充(2)---数据库查询优化
- 数据库优化相关的知识,及高并发下的数据库优化,解决数据库并发瓶颈
- Android知识梳理之Sqlite数据库的使用和优化
- 数据库知识
- 数据库知识
- 数据库知识
- 数据库知识
- 数据库知识
- 数据库知识
- 数据库知识
- 数据库知识
- 数据库知识
- 数据库知识
- 数据库知识
- 如何查看 ubuntu 是 32位 or 64位?
- Boost智能指针——shared_ptr
- Ext.form.field.ComboBox示例
- Java中点击事件的四种写法
- sigsuspend()函数作用详解
- 数据库优化知识
- Promise例子
- 菜单框架简单程序设计
- MySQL字符编码设置
- github常见操作和常见错误!错误提示:fatal: remote origin already exists.
- PHP数据库操作——连接查询
- iOS开发中上传JSON字符串到后台服务器
- JUnit5 技术前瞻
- MySQL的数据控制语言DCL