这些解决方案之一是客观上更好,还是全部取决于数据?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发布于 2017-03-30 06:34:21
这在很大程度上取决于域。假设v2.2中的查询优化器只是开始扫描(或查询索引)目标类(第一个查询中的权限,第二个查询中的用户),然后继续遍历。
如果在type属性中有很少的权限记录,并且每个权限的传入边数很低,那么第一个查询就会更高效。如果您在type上有一个索引,那就更好了
如果login > "admin“(同样,可能有索引)的用户很少,并且每个用户的传出边数较低,则第二个查询更有效。
https://stackoverflow.com/questions/43094070
复制相似问题