如何在SQL语句提示优化器不使用某索引

[复制链接]
查看11 | 回复8 | 2007-10-20 08:38:44 | 显示全部楼层 |阅读模式
TBL1索引有:INDEX_1,INDEX_2,INDEX3
它默认是用INDEX_2索引的
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
本人想在查询时,不使用INDEX_2来索引,该如何写SQL
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
NO_INDEX ?
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
/*+ no_index(a INDEX_2) */
注意 a 代表表的别名,若是视图v里的表,则还要改写成 (v.a INDEX_2)
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
用no_index提示。。。。
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
select/*+ no_index(a INDEX_2) */ * from TBL1 a
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
用了这个之后,查询变慢很多.
请问有什么办法达到下面效果:
SELECT * from tbl1 where ordid in ('4','2','6')
出现的结果也是,按IN表达式顺序出来的:
4
2
6
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
原帖由 ztony 于 2009-5-6 11:03 发表
用了这个之后,查询变慢很多.
请问有什么办法达到下面效果:
SELECT * from tbl1 where ordid in ('4','2','6')
出现的结果也是,按IN表达式顺序出来的:
4
2
6


SELECT * from tbl1 where ordid in ('4','2','6')
order by decode(ordid,'4',1,'2',2,'6',3)
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
sevenqxy 太牛了,这样的SQL都能写出来,用这个的确可以解决这个问题
非常感谢
只是DECODE参数个数最大为128个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行