0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【apex】ComparebleとSOQL、どちらでソートを実装すべきか

Last updated at Posted at 2025-09-01

はじめに

検索画面でソート機能を実装する際、
comparebleインターフェースを使うか、SOQLでORDER BY句を使うか悩んだので、
見解をまとめます

結論

SOQLでできることはSOQLでやった方がいい

理由

Comparebleだと、CPU 時間制限に近づきやすくなるため

詳細説明

1. SOQLならばメモリ効率が最適化される

・ORDER BY を利用すると、データベース(DB側)で並び替えが完了した結果だけを受け取るため、Apex 側に載るメモリは「結果件数 × レコードサイズ」のみ
必要なデータだけが Apex にロードされ、メモリ使用量を最小限に抑えられる

2. Comparable を使うと、Apex に余計な負荷がかかる

・Comparable を使う場合、一度 SOQL で取得したデータ全体を Apex 側に保持し、その上で並べ替え処理を行う必要がある
・Apex に処理を移す分、処理負荷(CPU時間)が余計に発生する

3. 件数が少なければ差はほとんどないのも事実

ヒープメモリはどちらも変わりないが、
Comparebleではapex側でソート処理をするため、
レコード数が増えるとCPU 時間制限に引っ掛かりやすくなる

おわりに

Comparebleを初めて見たので、かっこいいし使った方がいいのかなと思いましたが、
DB側でできることはやるべき が大前提のようです。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?