仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1238|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之对参数 optimizer_index_cost_adj 的一...

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:25:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
因此我们的保存数据方法就是:在删除的动作开始之前,把表数据备份起来,然后留一个空表,在空表上执行“删除”操作。
参数optimizer_index_cost_adj设定了经由过程索引扫描和全表扫描之间的价值损耗干系,其默许值为100,暗示ORACLE在盘算查询本钱时,经由过程索引查找和全表扫描本钱相称。该参数值越小,标明经由过程索引查找的价值越小,反之则越年夜。

经由过程以下实验,演示该参数的用法。

1)检察参数optimizer_index_cost_adj确当前值


SQL>conn/assysdba









Connected.











SQL>showparameteroptimizer_index_cost_adj



















NAMETYPEVALUE

--------------------------------------------------------

optimizer_index_cost_adjinteger100

--参数以后的默许值为100



SQL>













SQL>selectisses_modifiable,issys_modifiable



2fromv$parameter









3wherename=optimizer_index_cost_adj;



















ISSESISSYS_MOD











--------------











TRUEFALSE

--申明该参数能够在SESSION级别静态改动,

但不克不及在SYSTEM级别静态改动











2)创立表及索引,并对表举行剖析

SQL>connscott/tiger







Connected.









SQL>createtabletest(anumber,bchar(10));















Tablecreated.





















SQL>











SQL>begin









2foriin1..10000loop





3insertintotestvalues(i,to_char(i));

4endloop;









5commit;









6end;









7/























PL/SQLproceduresuccessfullycompleted.















SQL>











SQL>createindexidx_test_aontest(a);















Indexcreated.





















SQL>











SQL>analyzetabletestcomputestatistics



2fortable









3forallindexes







4forallindexedcolumns;

















Tableanalyzed.





















SQL>












3)将参数optimizer_index_cost_adj设为100,检察响应的实行企图

SQL>setautotracetraceonlyexplain







SQL>altersessionsetoptimizer_index_cost_adj=100;





Sessionaltered.





























SQL>select*fromtestwherea=1;









ExecutionPlan













----------------------------------------------------------



0SELECTSTATEMENTOptimizer=CHOOSE(Cost=2Card=1Bytes=15)

10TABLEACCESS(BYINDEXROWID)OFTEST(Cost=2Card=1Byt

es=15)





























21INDEX(RANGESCAN)OFIDX_TEST_A(NON-UNIQUE)(Cost=1

Card=1)














在以上部分中,ORACLE接纳了准确的查找办法,利用索引来查找数据。
上面演示怎样让ORACLE接纳全表扫描的体例来查找数据,固然我们明知这类体例效力不高。

4)改动参数optimizer_index_cost_adj为1000,改动ORACLE的决议历程

SQL>altersessionsetoptimizer_index_cost_adj=1000;





















Sessionaltered.





























SQL>select*fromtestwherea=1;

























ExecutionPlan













----------------------------------------------------------



0SELECTSTATEMENTOptimizer=CHOOSE(Cost=4Card=1Bytes=15)

10TABLEACCESS(FULL)OFTEST(Cost=4Card=1Bytes=15)

在以演出示中,经由过程改动optimizer_index_cost_adj参数,ORACLE接纳全表扫描来实行一样的查询。

5)总结
在OLTP体系中,能够思索将optimizer_index_cost_adj参数值设小,使体系偏向于利用索引;在DSS体系中,则能够思索得当将该参数调年夜,影响ORACLE的决议历程。

对于update操作,event中依次记录旧行,新行的值。
乐观 该用户已被删除
沙发
发表于 2015-1-18 09:56:46 | 只看该作者
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
简单生活 该用户已被删除
板凳
发表于 2015-1-21 18:35:55 | 只看该作者
每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
小女巫 该用户已被删除
地板
发表于 2015-1-30 21:46:05 | 只看该作者
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-6 16:09:05 | 只看该作者
个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。
活着的死人 该用户已被删除
6#
发表于 2015-2-17 02:58:51 | 只看该作者
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
海妖 该用户已被删除
7#
发表于 2015-3-5 15:00:22 | 只看该作者
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
深爱那片海 该用户已被删除
8#
发表于 2015-3-12 08:52:22 | 只看该作者
原来公司用过MYSQL自己也只是建个表写个SQL
第二个灵魂 该用户已被删除
9#
发表于 2015-3-19 19:31:16 | 只看该作者
始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 00:45

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表