0
これらのソリューションのいずれかが客観的に優れているのか、それともすべてデータに依存していますか? Explainオプションは、実際には、オプティマイザがクエリを別の方法で実行することを示しています。これは単なる例です。私はアプリケーションでこのようなクエリをたくさん用意しています。そのようなフィルタリングを実行する最適な方法を知りたいと思います。グラフクエリ - どこから選択して展開するか
SELECT *
FROM
(SELECT expand(in('hasPermission'))
FROM Permission
WHERE type IN ['USER'])
WHERE
login >="admin"
ORDER BY
login ASC
LIMIT 3
SELECT *
FROM User
WHERE login >= "admin"
AND out("hasPermission").type IN ["USER"]
ORDER BY login ASC
LIMIT 3
私が疑っていたものです。クエリオプティマイザの内部動作を説明してくれてありがとうございます。 –
ああ、私はこれがクエリのピボットと呼ばれることも学んだ。 2番目のクエリでは、この種のクエリに適合する複合インデックスを作成できますか? –
いいえ、残念ながら、この場合は "connected"要素のインデックスは使用されません。すなわち、 Permission.typeのインデックスは2番目のクエリで使用されません –