SQL或运营商不良性能



我有一个带有索引字段year的表,并且我的性能不佳,并且我可以理解原因。使用这样的查询:

select ..... where year = 2016 ...

我的性能良好,但是有这样的查询:

select .... where ((year = 2016 and month = 1) or (year = 2015 and month = 7)) ...

事情转速非常慢...为什么在最后一个情况下不使用year字段上的索引?我知道为什么在这样的查询中,这种灌注会很糟糕:

select .... where year = 2016 or month = 1

但是为什么在我的情况下?

预先感谢您!

yearmonth上构建索引,并使用:

where (year, month) in ( (2016, 1), (2015, 7) )

Oracle应该足够聪明,可以将复合索引用于查询。这个版本更简洁,更易于编写和阅读。

相关内容

  • 没有找到相关文章

最新更新