抽象化の境界は最適化の境界:データベースクエリ最適化のための抽象化レベルの引き上げ
2025-07-01
アプリケーションがコレクションの各要素に対して1つのSQLクエリを送信するN+1クエリ問題は、リーキーな抽象化に起因します。この記事では、抽象化の境界を下げる(例えば、ORMにバルクフェッチを明示的に指示する)のではなく、上げることを提案しています。ORMを言語に統合することで、N個のクエリを1つのクエリにマージする書き換えルールを作成できます。これは、Haskellがリスト操作の最適化に書き換えルールを使用することと似ており、その宣言的な性質を利用して低レベルの動作セマンティクスを抽象化し、最適化を向上させています。重要なのは、抽象化の境界を引き上げることで、最適化の境界も引き上げられるということです。
続きを読む