课程实践(二)续
案例十一点击(此处)折叠或打开--删除customers表上除主键索引外的所有索引sh@TESTDB11>@drop_customers_indexes.sql--在cust_credit_limit列上创建B-Tree索引CREATE INDEX idx_cust_credit_limit ON customers(cust_credit_limit) NOL...
课程实践(二)续
案例十点击(此处)折叠或打开--删除customers表上除主键索引外的所有索引sh@TESTDB11>@drop_customers_indexes.sql--创建位图索引CREATE BITMAP INDEX bidx_cust_credit_limit ON customers(cust_credit_limi...
课程实践(二)续
案例九点击(此处)折叠或打开--执行drop_customers_indexes.sql, 删除除主键索引外的所有索引.sh@TESTDB11>@drop_customers_indexes.sql--在2个列上分别创建索引CREATE INDEX idx_cust_last_name ON custom...
课程实践(二)续
案例八点击(此处)折叠或打开--执行drop_customers_indexes.sql, 删除除主键索引外的所有索引.sh@TESTDB11>@drop_customers_indexes.sql--创建复合索引CREATE INDEX idx_cust_last_first_name ON customers(cust_last_name, cust_first...
课程实践(二)续
案例七点击(此处)折叠或打开--query08.sql--优化程序使用customers表上的主键来解析此查询. 最终成本极低.SET ECHO ONSET TIMING ONSET AUTOTRACE TRACEONLYSET PAGESIZE 1000@flush.sql...
课程实践(二)续
案例六点击(此处)折叠或打开--执行drop_customers_indexes.sql, 删除除主键索引外的所有索引.sh@TESTDB11>@drop_customers_indexes--在customers表上创建3个不同的位图索引, 并查看(Luise)sh@TESTDB11>CREATE BITMAP INDEX bidx_cust_...
课程实践(二)续
案例五点击(此处)折叠或打开--执行drop_customers_indexes.sql, 删除除主键索引外所有索引sh@TESTDB11>@drop_customers_indexes.sql--创建2个位图索引CREATE BITMAP INDEX bidx_cust_year_of_birth ON customers(cust_year_of_birth) ...
课程实践(二)续
案例四点击(此处)折叠或打开--删除customers表上的所有索引sh@TESTDB11>@drop_customers_indexes.sql--在customers表上创建3个不同的位图索引, 并查看sh@TESTDB11>CREATE BITMAP INDEX bidx_cust_gender ON customers(cust_gender) NO...
课程实践(二)续
案例三点击(此处)折叠或打开--执行drop_customers_indexes.sql脚本, 删除customers表上的所有索引--创建复合索引CREATE INDEX idx_gender_limit_code ON customers(cust_gender, cust_credit_limit, cust_postal_code)NOLOGGING COMPUTE STATISTICS...
课程实践(二)续
案例二点击(此处)折叠或打开--drop_customers_indexes.sql. 删除customers表上除主键索引外的所有索引SET TERMOUT OFF--保存当前SQL*Plus系统变量的设置STORE SET sqlplus_settings replace--保护SQL*Plus...
课程实践(二)
使用不同的访问路径案例一点击(此处)折叠或打开--执行ap_setup.sh脚本搭建环境# ap_setup.sh脚本# !/bin/bashsqlplus / as sysdba <<EOFalter user sh identified by sh account unlock;grant dba to sh;...
课程实践(一)续
案例六点击(此处)折叠或打开# bad_connect.sh# !/bin/bashSTREAM_NUM=0MAX_STREAM=500datewhile [ $STREAM_NUM -lt $MAX_STREAM ]; do let STREAM_NUM=\"STREAM_NUM+1...
课程实践(一)续
案例五点击(此处)折叠或打开--5.1 badselect count(*) from myemp where salary < 2000; COUNT(*)---------- 0Elapsed: 00...
课程实践(一)续
案例四点击(此处)折叠或打开--4.1 badselect count(*) from (select name from old union select name from new); COUNT(*)---------- 1000000...
课程实践(一)续
案例三点击(此处)折叠或打开--3.1 bad select * from orders where order_id_char = 1205;Elapsed: 00:00:12.67--3.2 goodselect * from orders where order_id_char = \'1205\';...
课程实践(一)续1
案例二点击(此处)折叠或打开--创建setup_rest.sh脚本# setup_rest.sh# !/bin/bashcd $HOME/solutions/Common_Mistakessqlplus / as sysdba
课程实践(一)
避免常见错误注意: 打开SQL*Plus时间显示 每次执行之前都要执行@flush清空内存 所有脚本均存在于$HOME/solutions/Common_Mistakes目录中案例一将相关子查询方式改为内联视图方式点击(此处)折叠或打开--采用相关子查询的方式(bad) SELECT COUNT(*)...
设计开发时慎重决定列是否为空(二)
案例2NOT IN的典型查询中NULL值会限制unnest转换,导致优化器无法选择ANTI算法,而走了低效的filter。(11g中,二者选择的执行计划是一样的)点击(此处)折叠或打开DROP TABLE t1;CREATE TABLE t...
设计开发时慎重决定列是否为空
大家在进行表结构设计时,对于表的字段是否为空比较随意,这是错误的。例如,允许id1和id2列为空的情况下,比较条件id1 = id2就应该转换为nvl(id1, 0) = nvl(id2, 0)案例1点击(此处)折叠或打开DROP TABLE t;CREATE TABLE t AS SEL...
IF的顺序有讲究
即便IF逻辑是平行的,也可以根据调用PL/SQL过程函数的IN参数值的分布情况来决定IF的顺序。IN参越是频繁调用的值,对应的IF逻辑就越需要靠前,因为Oracle对IF的调用是靠前的调用执行的更快速。因为条件靠前可以减少判断的次数,也就不会再尝试后面的表达式。点击(此处)折叠或打开...