首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免对查询进行完全扫描

避免对查询进行完全扫描
EN

Stack Overflow用户
提问于 2015-05-04 14:56:38
回答 1查看 70关注 0票数 0

通过这个查询

代码语言:javascript
复制
SELECT * FROM
      (SELECT
          T.*,
          'T'||to_char(min(T.ORDEN_CAMPO) OVER (PARTITION BY T.NOMBRE_ESQUEMA, T.NOMBRE_TABLA, T.CONDICION_ADICIONAL ORDER by T.ORDEN_CAMPO)) ALIAS1
       FROM SOLICITUDES.TBL_QRY_DINAMICO_SOLDEU T
       WHERE
          TIPO_QRY = 'SOLICITUD_DEU' AND
          SUBTIPO_QRY = Numero_Seccion_in
       )
   ORDER BY  ORDEN_CAMPO

我在执行解释计划时会得到全表扫描。特别是在完成过分区的部分。还有其他方法来做同样的逻辑吗?

在外部select语句中,如果直接调用要获取的值,则不会得到TFS,但是当调用ALIAS1时,会出现TFS。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-05 08:59:36

  1. 索引列ORDEN_CAMPO
  2. TIPO_QRY = 'SOLICITUD_DEU' AND SUBTIPO_QRY = Numero_Seccion_in过滤的行的份额是多少?如果小于10%,则对两列进行索引。
  3. 您可以尝试索引列NOMBRE_ESQUEMA、NOMBRE_TABLA和CONDICION_ADICIONAL。

注意:正如前面提到的@xionutz2k,在某些情况下,全表扫描可能比索引扫描更有效。如果提到了所有索引,并且解释计划总是显示全表扫描,那么就可以了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30033306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档