oracle走索引查询变慢

 我来答
天罗网17
2022-06-23 · TA获得超过6191个赞
知道小有建树答主
回答量:306
采纳率:100%
帮助的人:73.3万
展开全部

在做交易系统时,遇到一个场景,需要查询交易表的某个时段的交易,但是时段间交易数据过大,导致查询时间太长,达到25小时还在进行,最后只能kill。
sql:

t_txn为交易表,merchant_id表示商户号,terminal_id表示终端号,txn_time表示交易时间,同时txn_time有索引。

研究分析,问题就出在txn_time上,如果走索引会非常慢,反而不走索引(/ +no_index(t) /)速度反而很快。

原理分析:
使用索引查一条数据,需要先访问索引的数据,然后再访问表的数据,两次读操作
如果全表扫描,只访问表的数据,一次读操作
所以,如果查询结果占到表数据的50%以上,使用索引必然慢
再考虑到一次读操作可以读多条数据,索引的结构又比表复杂
可能查询结果占到表数据的一定比例以上,使用索引就不如全表扫描了

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式