arel-mysql-index-hint
Add index hint to MySQL query in Arel.
Installation
Add this line to your application's Gemfile:
gem 'arel-mysql-index-hint'
And then execute:
$ bundle
Or install it yourself as:
$ gem install arel-mysql-index-hint
Usage
Article.hint(force: :idx_article)
#=> "SELECT `articles`.* FROM `articles` FORCE INDEX (`idx_article`)"
Article.hint(force: [:idx_article, :idx_article2])
#=> "SELECT `articles`.* FROM `articles` FORCE INDEX (`idx_article`, `idx_article`)"
Article.hint(use: :idx_article, ignore: :idx_article2)
#=> "SELECT `articles`.* FROM `articles` USE INDEX (`idx_article`) IGNORE INDEX (`idx_article`)"
Article.joins(:comments).hint(articles: {use: :idx_article})
#=> "SELECT `articles`.* FROM `articles` USE INDEX (`idx_article`) INNER JOIN `comments` ON `comments`
Article.joins(:comments).hint(comments: {force: :idx_comment})
#=> "SELECT `articles`.* FROM `articles` INNER JOIN `comments` FORCE INDEX (`idx_comment`) ON `comments"
Running tests
docker-compose up -d
bundle install
bundle exec appraisal install
bundle exec appraisal activerecord-4.0 rake
bundle exec appraisal activerecord-4.1 rake
bundle exec appraisal activerecord-4.2 rake
bundle exec appraisal activerecord-5.0 rake
Notice: mysql-client is required.
on OS X (docker-machine & VirtualBox)
Port forwarding is required.
VBoxManage controlvm default natpf1 "mysql,tcp,127.0.0.1,3306,,3306"