Rails optimizer_hints

Rails ではRDBにたいしてオプティマイザヒント を与えるためのメソッド optimizer_hints がある。

ActiveRecord::QueryMethods | RailsDoc(β)

Topic.optimizer_hints("MAX_EXECUTION_TIME(50000)", "NO_INDEX_MERGE(topics)")
# SELECT /*+ MAX_EXECUTION_TIME(50000) NO_INDEX_MERGE(topics) */ `topics`.* FROM `topics`

どうやら Rails 6 から入った機能のようで、kamipo氏が下記のPRで入れてくれている。

Support Optimizer Hints by kamipo · Pull Request #35615 · rails/rails

ちなみに index hints の機能もあったほうがいいのでは?って思ったけど mysql only の機能だし、mysql でも deprecated な機能なので、下記の提案はRejectされている。

Support USE INDEX index hints API by intrip · Pull Request #42046 · rails/rails