首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Knex.js参数与Oracle分区的绑定

Knex.js参数与Oracle分区的绑定
EN

Stack Overflow用户
提问于 2020-05-22 19:50:13
回答 1查看 243关注 0票数 0

有没有办法告诉knex.js不要使用参数绑定?而是将值注入到原始查询中?

我们目前在以Oracle为数据库的Node.js环境中使用knex.js。我们遇到了查询性能不佳的情况,并将范围缩小到分区表上的参数绑定。

我们的表在CREATE_DATE列上进行了分区,并且knex.js正在生成如下所示的查询:

代码语言:javascript
复制
select col1, col2 from my_table where create_date >= ? and create_date < ?

如果我理解了Oracle文档,并且根据一些测试,Oracle在这种情况下使用了动态剪枝,并且给我们带来了一些非常糟糕的性能。如果我像这样手动重新运行查询,它会非常快:

代码语言:javascript
复制
select col1, col2 from my_table where create_date >= to_date('2020-05-20', 'YYYY-MM-DD') and create_date < to_date('2020-05-21', 'YYYY-MM-DD')

在这两个查询上运行explain plan会产生截然不同的性能结果。第一种方法的成本比第二种方法高得多。

有没有办法告诉knex.js使用文字值而不是使用参数绑定?

EN

回答 1

Stack Overflow用户

发布于 2020-05-22 21:02:37

因为Knex是一个查询构建器,所以它有一种方法来传递raw query或其中的一部分。

代码语言:javascript
复制
knex('my_table')
  .columns('col1', 'col2')
  .whereRaw("create_date >= to_date('2020-05-20', 'YYYY-MM-DD')")
  .whereRaw("create_date < to_date('2020-05-21', 'YYYY-MM-DD')");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61954365

复制
相关文章

相似问题

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