1

我正在对我的数据执行一些 sql 语句,我有以下情况。

选择语句看起来像这样

select *
from t1, t2
where t1.id = t2.t1_id
t1.c1 = 'X' and t1.c2  in ('Y', 'Z')

运行解释计划,我看到 col2 过滤的成本为 11(带有过滤谓词的表访问)和 col1 1(表访问索引)。

如何降低在 col2 上的搜索成本?我应该在查询中添加任何提示吗?

提前致谢,

4

1 回答 1

1

我更喜欢查询的 ANSI 语法:

select *
from t1 join
     t2
     on t1.id = t2.t1_id
where t1.c1 = 'X' and t1.c2  in ('Y', 'Z');

考虑 和 上的t1(c1, c2, id)索引t2(t1_id)。第一个索引应该用于从t1. 第二个应该加快加入到t2.

编辑:

根据 David 的评论,索引的t1(c1, c2)表现可能会稍好一些。

于 2013-09-01T16:24:56.513 回答