1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-27 09:09:44 +02:00

Optimize document fetching SQL

Removed redundant sub-query to speed up fetching of documents by space.

There is no cross-tenant leak of information with this change.
This commit is contained in:
Harvey Kandola 2018-12-13 12:25:53 +00:00
parent f442081a41
commit 8d525ce733

View file

@ -81,7 +81,6 @@ func (s Store) GetBySpace(ctx domain.RequestContext, spaceID string) (documents
c_versionorder AS versionorder, c_groupid AS groupid, c_created AS created, c_revised AS revised c_versionorder AS versionorder, c_groupid AS groupid, c_created AS created, c_revised AS revised
FROM dmz_doc FROM dmz_doc
WHERE c_orgid=? AND c_template=false AND c_spaceid IN WHERE c_orgid=? AND c_template=false AND c_spaceid IN
(SELECT c_refid FROM dmz_space WHERE c_orgid=? AND c_refid IN
(SELECT c_refid FROM dmz_permission WHERE c_orgid=? AND c_location='space' AND c_refid=? AND c_refid IN (SELECT c_refid FROM dmz_permission WHERE c_orgid=? AND c_location='space' AND c_refid=? AND c_refid IN
(SELECT c_refid from dmz_permission WHERE c_orgid=? AND c_who='user' AND (c_whoid=? OR c_whoid='0') AND c_location='space' AND c_action='view' (SELECT c_refid from dmz_permission WHERE c_orgid=? AND c_who='user' AND (c_whoid=? OR c_whoid='0') AND c_location='space' AND c_action='view'
UNION ALL UNION ALL
@ -89,9 +88,8 @@ func (s Store) GetBySpace(ctx domain.RequestContext, spaceID string) (documents
AND p.c_who='role' AND p.c_location='space' AND p.c_refid=? AND p.c_action='view' AND (r.c_userid=? OR r.c_userid='0') AND p.c_who='role' AND p.c_location='space' AND p.c_refid=? AND p.c_action='view' AND (r.c_userid=? OR r.c_userid='0')
) )
) )
)
ORDER BY c_name, c_versionorder`), ORDER BY c_name, c_versionorder`),
ctx.OrgID, ctx.OrgID, ctx.OrgID, spaceID, ctx.OrgID, ctx.UserID, ctx.OrgID, spaceID, ctx.UserID) ctx.OrgID, ctx.OrgID, spaceID, ctx.OrgID, ctx.UserID, ctx.OrgID, spaceID, ctx.UserID)
if err == sql.ErrNoRows { if err == sql.ErrNoRows {
err = nil err = nil
@ -100,6 +98,9 @@ func (s Store) GetBySpace(ctx domain.RequestContext, spaceID string) (documents
err = errors.Wrap(err, "select documents by space") err = errors.Wrap(err, "select documents by space")
} }
// (SELECT c_refid FROM dmz_space WHERE c_orgid=? AND c_refid IN
// )
return return
} }