如何解决如何在Knex.js和MySQL中使用索引
我使用Knex.js为列创建了索引,但是找不到任何使用它的方法。
knex('my_table')
.select('*')
.where('my_table.status','2')
索引名称为: my_table_stats_idx
我可以使用kex.raw()做到这一点,
FROM my_table USE INDEX(my_table_stats_idx)
但是我不得不使用一个复杂的查询建筑物,该建筑物不适用于 raw()
有没有办法用Knex做到这一点?
解决方法
在SQL中,您不会告诉数据库应使用哪个索引。您要做的只是描述所需的结果:数据库决定如何处理您的语句。为此,查询计划器考虑各种信息,当然包括可用的索引。如果它估计使用索引的计划是最佳的,则使用索引-否则就不使用。
您不会告诉您索引的定义是什么。对于您的查询,最佳索引可能是my_table(status)
上的单列索引。
最后:在大多数数据库中,都有一些通过提示建议数据库使用给定索引的方法。这些在查询计划程序无法自行解决问题的极端情况下很有用。您的查询显然不够复杂,无法满足这种情况。
,在from子句中需要knex.raw
knex
.select('*')
.where('my_table.status','2')
.from(knex.raw('my_table FORCE INDEX(my_table_stats_idx)'))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。