首页 >>  正文

oracle查询所有表和字段

来源:baiyundou.net   日期:2024-09-21
Oracle的优化器有两种优化方式,即基于规则的优化方式(Rule-Based Optimization,简称为RBO)和基于代价的优化方式(Cost-Based Optimization,简称为CBO),在Oracle8及以后的版本,Oracle强列推荐用CBO的方式
RBO方式:优化器在分析语句时,所遵循的是Oracle内部预定的一些规则。比如我们常见的,当一个where子句中的一列有索引时去走索引。
CBO方式:它是看语句的代价(Cost),这里的代价主要指Cpu和内存。优化器在判断是否用这种方式时,主要参照的是表及索引的统计信息。统计信息给 出表的大小、有少行、每行的长度等信息。这些统计信息起初在库内是没有的,是做analyze后才出现的,很多的时侯过期统计信息会令优化器做出一个错误的执行计划,因些应及时更新这些信息。
注意:走索引不一定就是优的,比如一个表只有两行数据,一次IO就可以完成全表的检索,而此时走索引时则需要两次IO,这时全表扫描(full scan)是最好
优化模式包括Rule、Choose、First rows、All rows四种方式:
Rule:基于规则的方式。
Choolse:默认的情况下Oracle用的便是这种方式。指的是当一个表或或索引有统计信息,则走CBO的方式,如果表或索引没统计信息,表又不是特别的小,而且相应的列有索引时,那么就走索引,走RBO的方式。
First Rows:它与Choose方式是类似的,所不同的是当一个表有统计信息时,它将是以最快的方式返回查询的最先的几行,从总体上减少了响应时间。
All Rows:也就是我们所说的Cost的方式,当一个表有统计信息时,它将以最快的方式返回表的所有的行,从总体上提高查询的吞吐量。没有统计信息则走RBO的方式。
设定选用哪种优化模式:
A、Instance级别我们可以通过在initSID.ora文件中设定OPTIMIZER_MODE=RULE/CHOOSE/FIRST_ROWS/ALL_ROWS如果没设定OPTIMIZER_MODE参数则默认用的是Choose方式。
B、Sessions级别通过ALTER SESSION SET OPTIMIZER_MODE=RULE/CHOOSE/FIRST_ROWS/ALL_ROWS来设定。
C、语句级别用Hint()来设定
为什么表的某个字段明明有索引,但执行计划却不走索引?
1、优化模式是all_rows的方式
2、表作过analyze,有统计信息
3、表很小,上文提到过的,Oracle的优化器认为不值得走索引


","gnid":"9caec5ffa3996c4e2","img_data":[{"flag":2,"img":[{"desc":"","height":"373","title":"","url":"https://p0.ssl.img.360kuai.com/t01421cac7db25629c3.png","width":"767"}]}],"original":0,"pat":"art_src_0,fts0,sts0","powerby":"hbase","pub_time":1695115174000,"pure":"","rawurl":"http://zm.news.so.com/ce929cc4c0c69c78e300aabe45748b0c","redirect":0,"rptid":"ef2470624d54e183","rss_ext":[],"s":"t","src":"重庆思庄","tag":[{"clk":"ktechnology_1:cpu","k":"cpu","u":""}],"title":"oracle的四种优化模式

邱菲狮2055oracle 怎样查询某用户下的所有表的表名 -
后胁倪13979481045 ______ ORACLE下有三个视图 DBA_TABLES 拥有DBA角色的用户可以查看系统中的所有表 USER_TABLES 登录数据库的当前用户拥有的所有表 ALL_TABLES 登录数据库的当前用户有权限查看的所有表 类似的,除了表,还有视图、存储过程、同义词等等对象,使用[DBA|USER|ALL]_TABLES可以查看到你想要的对象

邱菲狮2055如何在oracle数据库中查询记录总条数 -
后胁倪13979481045 ______ 可用两种方法,一种是在oracle的系统表中统计,另一种需要写存储过程统计,方法分别如下. 1、系统表中统计: SELECT sum(num_rows) FROM user_tables;结果: 2、存储过程统计,代码如下: declarev_tName varchar(50);v_sqlanalyze ...

邱菲狮2055oracle 怎样查询某用户下的所有表的表名 -
后胁倪13979481045 ______ 1. DBA_TABLES 拥有DBA角色的用户可以查看系统中的所有表2. USER_TABLES 登录数据库的当前用户拥有的所有表3. ALL_TABLES 登录数据库的当前用户有权限查看的所有表4. 类似的,除了表,还有视图、存储过程、同义词等等对象,使用[DBA|USER|ALL]_TABLES可以查看到你想要的对象!

邱菲狮2055oracle 怎样查询某用户下的所有表的表名 -
后胁倪13979481045 ______ oracle视图all_tables支持你要的查询,例如:select * from all_tables where owner='SYS',当然你也可以查询其他用户的表或特定命名空间的表,等等

邱菲狮2055oracle 怎样查询某用户下的所有表的表名 -
后胁倪13979481045 ______ select * from user_tables; 这个是查看当前登录用户下的所有表

邱菲狮2055怎样查询数据库中包含的所有表 -
后胁倪13979481045 ______ 用like语句查询. SQL Server语法如下(如查询包含spt的表) 1 select name from sys.objects where type='U' and name like '%spt%'; 结果: Oracle语法如下(如查询包含test的表) 1 select table_name from user_tables where table_name like '%TEST%'; 结果: 注意:Oracle中,表名处的字母一定要大写.

邱菲狮2055oracle 怎样查询某用户下的所有表的表名 -
后胁倪13979481045 ______ 查询当前用户的表名:select * from user_tables 或者查询某用户的表名:SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER='<用户名>'

邱菲狮2055如何查询oracle一个数据库中包含有某个特定值的所有表及字段名 -
后胁倪13979481045 ______ select column_name,table_name,data_type ,data_length,data_precision,data_scale from user_tab_columns where column_name='字段名'; --根据字段名查出相关的表名出来.记录下来--然后对查出来的表进行查询,找到含这内容字段的表 select * from 表名 where 字段名='xiaoming'!

邱菲狮2055查看Oracle有哪些表或者视图 -
后胁倪13979481045 ______ -- 查询你 当前用户下,有哪些表 SELECT * FROM user_tables-- 查询你 当前用户下, 可以访问哪些表 [也就是访问自己 和 其他用户的] SELECT * FROM all_tables-- 查询当前数据库所有的表, 需要你有 DBA 的权限 SELECT * FROM dba_tables

邱菲狮2055oracle 怎样查询某用户下的所有表的表名 -
后胁倪13979481045 ______ 查询scott用户下所有表名: select table_name from dba_users where owner='SCOTT'; 也可以用scott用户查询 select table_name from user_tables;

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024