技術メモ

書いておぼえるブログ

【SQL】selectで * を使うとおそい

状況

Active Recordのselectで*でテーブルのすべてのカラムを選択するようにしたらどことなく遅くなった。

改善  

*で全部のカラムを返すのではなくて、実際に使う値のカラムを指定するようにした。

前:

Book.select('books.*')

あと:

Book.select('books.title, books.price, books.author, books.isbn')

テーブルのカラムが大量にあればあるほど、明示的に指定して絞れた場合のスピードアップは大きい。

感想  

業務でうえのようにカラムを指定したら2〜3倍クエリが速くなった。かんたんに速度の向上が実現できてよい。