QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Limit (cost=237.59..237.62 rows=13 width=326) (actual time=3389.623..3400.259 rows=50 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, (count(skills.id)), (count("languagesList".id)), (count(certificates.id)), (count(mobility.id)), (count(studies.id)), (count(experience.id)), (count(address.id)), (count(DISTINCT "chatMessages".id)), (json_agg(CASE WHEN (appointments.id IS NULL) THEN NULL::json ELSE json_build_object('id', appointments.id, 'validations', json_build_array(json_build_object('managerId', "appointments -> validations"."managerId", 'validated', "appointments -> validations".validated)), 'recruiterUser', json_build_object('id', "appointments -> recruiterUser".id, 'firstName', "appointments -> recruiterUser"."firstName", 'lastName', "appointments -> recruiterUser"."lastName", 'company', json_build_object('id', "appointments -> recruiterUser -> company".id, 'title', "appointments -> recruiterUser -> company".title)), 'day', appointments.day, 'time', appointments."time", 'status', appointments.status) END)), (json_agg(CASE WHEN (applications.id IS NULL) THEN NULL::json ELSE json_build_object('id', applications.id, 'job', json_build_object('id', "applications -> job".id, 'title', "applications -> job".title), 'validations', json_build_array(json_build_object('managerId', "applications -> validations"."managerId", 'validated', "applications -> validations".validated)), 'cv', json_build_object('id', "applications -> cv".id, 'cvFile', "applications -> cv"."cvFile")) END)), (json_agg(CASE WHEN (visits.id IS NULL) THEN NULL::json ELSE json_build_object('id', visits.id, 'time', visits."time", 'jobBoard', json_build_object('anonymized', "visits -> jobBoard".anonymized, 'subdomain', "visits -> jobBoard".subdomain)) END)), validations.id, validations.validated, validations."jobBoardId", visits."time" Buffers: shared hit=543, temp read=20022 written=20045 -> Sort (cost=237.59..237.62 rows=13 width=326) (actual time=3389.621..3400.248 rows=50 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, (count(skills.id)), (count("languagesList".id)), (count(certificates.id)), (count(mobility.id)), (count(studies.id)), (count(experience.id)), (count(address.id)), (count(DISTINCT "chatMessages".id)), (json_agg(CASE WHEN (appointments.id IS NULL) THEN NULL::json ELSE json_build_object('id', appointments.id, 'validations', json_build_array(json_build_object('managerId', "appointments -> validations"."managerId", 'validated', "appointments -> validations".validated)), 'recruiterUser', json_build_object('id', "appointments -> recruiterUser".id, 'firstName', "appointments -> recruiterUser"."firstName", 'lastName', "appointments -> recruiterUser"."lastName", 'company', json_build_object('id', "appointments -> recruiterUser -> company".id, 'title', "appointments -> recruiterUser -> company".title)), 'day', appointments.day, 'time', appointments."time", 'status', appointments.status) END)), (json_agg(CASE WHEN (applications.id IS NULL) THEN NULL::json ELSE json_build_object('id', applications.id, 'job', json_build_object('id', "applications -> job".id, 'title', "applications -> job".title), 'validations', json_build_array(json_build_object('managerId', "applications -> validations"."managerId", 'validated', "applications -> validations".validated)), 'cv', json_build_object('id', "applications -> cv".id, 'cvFile', "applications -> cv"."cvFile")) END)), (json_agg(CASE WHEN (visits.id IS NULL) THEN NULL::json ELSE json_build_object('id', visits.id, 'time', visits."time", 'jobBoard', json_build_object('anonymized', "visits -> jobBoard".anonymized, 'subdomain', "visits -> jobBoard".subdomain)) END)), validations.id, validations.validated, validations."jobBoardId", visits."time" Sort Key: "User"."lastName" Sort Method: external merge Disk: 73128kB Buffers: shared hit=543, temp read=20022 written=20045 -> GroupAggregate (cost=236.24..237.35 rows=13 width=326) (actual time=796.013..3183.035 rows=56 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, count(skills.id), count("languagesList".id), count(certificates.id), count(mobility.id), count(studies.id), count(experience.id), count(address.id), count(DISTINCT "chatMessages".id), json_agg(CASE WHEN (appointments.id IS NULL) THEN NULL::json ELSE json_build_object('id', appointments.id, 'validations', json_build_array(json_build_object('managerId', "appointments -> validations"."managerId", 'validated', "appointments -> validations".validated)), 'recruiterUser', json_build_object('id', "appointments -> recruiterUser".id, 'firstName', "appointments -> recruiterUser"."firstName", 'lastName', "appointments -> recruiterUser"."lastName", 'company', json_build_object('id', "appointments -> recruiterUser -> company".id, 'title', "appointments -> recruiterUser -> company".title)), 'day', appointments.day, 'time', appointments."time", 'status', appointments.status) END), json_agg(CASE WHEN (applications.id IS NULL) THEN NULL::json ELSE json_build_object('id', applications.id, 'job', json_build_object('id', "applications -> job".id, 'title', "applications -> job".title), 'validations', json_build_array(json_build_object('managerId', "applications -> validations"."managerId", 'validated', "applications -> validations".validated)), 'cv', json_build_object('id', "applications -> cv".id, 'cvFile', "applications -> cv"."cvFile")) END), json_agg(CASE WHEN (visits.id IS NULL) THEN NULL::json ELSE json_build_object('id', visits.id, 'time', visits."time", 'jobBoard', json_build_object('anonymized', "visits -> jobBoard".anonymized, 'subdomain', "visits -> jobBoard".subdomain)) END), validations.id, validations.validated, validations."jobBoardId", visits."time" Group Key: "User".id, visits."time", validations.id Buffers: shared hit=543, temp read=10881 written=10900 -> Sort (cost=236.24..236.28 rows=13 width=901) (actual time=694.945..829.632 rows=140466 loops=1) Output: "User".id, validations.id, visits."time", "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, skills.id, "languagesList".id, certificates.id, mobility.id, studies.id, experience.id, address.id, "chatMessages".id, appointments.id, "appointments -> validations"."managerId", "appointments -> validations".validated, "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser -> company".id, "appointments -> recruiterUser -> company".title, appointments.day, appointments."time", appointments.status, applications.id, "applications -> job".id, "applications -> job".title, "applications -> validations"."managerId", "applications -> validations".validated, "applications -> cv".id, "applications -> cv"."cvFile", visits.id, "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, validations.validated, validations."jobBoardId" Sort Key: "User".id, visits."time", validations.id Sort Method: external merge Disk: 64640kB Buffers: shared hit=543, temp read=10881 written=10900 -> Nested Loop Left Join (cost=189.19..236.00 rows=13 width=901) (actual time=224.153..395.404 rows=140466 loops=1) Output: "User".id, validations.id, visits."time", "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, skills.id, "languagesList".id, certificates.id, mobility.id, studies.id, experience.id, address.id, "chatMessages".id, appointments.id, "appointments -> validations"."managerId", "appointments -> validations".validated, "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser -> company".id, "appointments -> recruiterUser -> company".title, appointments.day, appointments."time", appointments.status, applications.id, "applications -> job".id, "applications -> job".title, "applications -> validations"."managerId", "applications -> validations".validated, "applications -> cv".id, "applications -> cv"."cvFile", visits.id, "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, validations.validated, validations."jobBoardId" Join Filter: ("User".id = validations."userId") Rows Removed by Join Filter: 432462 Buffers: shared hit=543, temp read=282 written=282 -> Hash Right Join (cost=189.19..234.78 rows=13 width=892) (actual time=224.137..266.840 rows=71346 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, appointments.id, appointments.day, appointments."time", appointments.status, "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser -> company".id, "appointments -> recruiterUser -> company".title, "appointments -> validations"."managerId", "appointments -> validations".validated, "chatMessages".id, skills.id, "languagesList".id, certificates.id, mobility.id, studies.id, experience.id, address.id Hash Cond: (address."userId" = "User".id) Buffers: shared hit=542, temp read=282 written=282 -> Seq Scan on public."Address" address (cost=0.00..44.32 rows=332 width=8) (actual time=0.015..0.088 rows=332 loops=1) Output: address.id, address."streetNumber", address."postalCode", address."addressFormatted", address."companyId", address."createdAt", address."updatedAt", address."userId", address."cityFormatted", address."countryShortName", address."countryLongName", address."regionLongName", address."regionShortName", address."cityShortName", address."cityLongName", address.street, address.location Buffers: shared hit=41 -> Hash (cost=189.02..189.02 rows=13 width=888) (actual time=224.013..224.041 rows=71346 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, appointments.id, appointments.day, appointments."time", appointments.status, "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser -> company".id, "appointments -> recruiterUser -> company".title, "appointments -> validations"."managerId", "appointments -> validations".validated, "chatMessages".id, skills.id, "languagesList".id, certificates.id, mobility.id, studies.id, experience.id Buckets: 16384 (originally 1024) Batches: 2 (originally 1) Memory Usage: 32411kB Buffers: shared hit=501, temp read=72 written=278 -> Hash Right Join (cost=174.80..189.02 rows=13 width=888) (actual time=102.776..157.596 rows=71346 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, appointments.id, appointments.day, appointments."time", appointments.status, "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser -> company".id, "appointments -> recruiterUser -> company".title, "appointments -> validations"."managerId", "appointments -> validations".validated, "chatMessages".id, skills.id, "languagesList".id, certificates.id, mobility.id, studies.id, experience.id Hash Cond: (experience."userId" = "User".id) Buffers: shared hit=501, temp read=72 written=72 -> Seq Scan on public."CandidateExperience" experience (cost=0.00..12.76 rows=376 width=8) (actual time=0.013..0.070 rows=378 loops=1) Output: experience.id, experience.title, experience."yearFrom", experience."yearTo", experience."userId", experience."companyName", experience."hideCompanyName", experience.department, experience."managedTeam", experience."managedBudget", experience."createdAt", experience."updatedAt", experience."sectorId", experience."categoryId", experience."responsibilityId", experience."companySizeId", experience."groupSizeId", experience."contractTypeId", experience.comment, experience."monthFrom", experience."monthTo" Buffers: shared hit=9 -> Hash (cost=174.64..174.64 rows=13 width=884) (actual time=102.657..102.683 rows=35106 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, appointments.id, appointments.day, appointments."time", appointments.status, "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser -> company".id, "appointments -> recruiterUser -> company".title, "appointments -> validations"."managerId", "appointments -> validations".validated, "chatMessages".id, skills.id, "languagesList".id, certificates.id, mobility.id, studies.id Buckets: 16384 (originally 1024) Batches: 2 (originally 1) Memory Usage: 16146kB Buffers: shared hit=492, temp read=31 written=66 -> Hash Right Join (cost=163.08..174.64 rows=13 width=884) (actual time=45.972..72.086 rows=35106 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, appointments.id, appointments.day, appointments."time", appointments.status, "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser -> company".id, "appointments -> recruiterUser -> company".title, "appointments -> validations"."managerId", "appointments -> validations".validated, "chatMessages".id, skills.id, "languagesList".id, certificates.id, mobility.id, studies.id Hash Cond: ("languagesList"."userId" = "User".id) Buffers: shared hit=492, temp read=31 written=31 -> Seq Scan on public."CandidateLanguage" "languagesList" (cost=0.00..9.44 rows=544 width=8) (actual time=0.011..0.055 rows=408 loops=1) Output: "languagesList".id, "languagesList"."userId", "languagesList"."createdAt", "languagesList"."updatedAt", "languagesList".rating, "languagesList"."languageId" Buffers: shared hit=4 -> Hash (cost=162.92..162.92 rows=13 width=880) (actual time=45.843..45.867 rows=17622 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, appointments.id, appointments.day, appointments."time", appointments.status, "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser -> company".id, "appointments -> recruiterUser -> company".title, "appointments -> validations"."managerId", "appointments -> validations".validated, "chatMessages".id, skills.id, certificates.id, mobility.id, studies.id Buckets: 16384 (originally 1024) Batches: 2 (originally 1) Memory Usage: 8074kB Buffers: shared hit=488, temp read=10 written=28 -> Hash Right Join (cost=154.06..162.92 rows=13 width=880) (actual time=16.227..29.224 rows=17622 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, appointments.id, appointments.day, appointments."time", appointments.status, "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser -> company".id, "appointments -> recruiterUser -> company".title, "appointments -> validations"."managerId", "appointments -> validations".validated, "chatMessages".id, skills.id, certificates.id, mobility.id, studies.id Hash Cond: (skills."userId" = "User".id) Buffers: shared hit=488, temp read=10 written=10 -> Seq Scan on public."CandidateSkills" skills (cost=0.00..7.50 rows=350 width=8) (actual time=0.008..0.046 rows=350 loops=1) Output: skills.id, skills.title, skills."userId", skills."createdAt", skills."updatedAt", skills.rating, skills.year Buffers: shared hit=4 -> Hash (cost=153.89..153.89 rows=13 width=876) (actual time=16.136..16.159 rows=8846 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, appointments.id, appointments.day, appointments."time", appointments.status, "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser -> company".id, "appointments -> recruiterUser -> company".title, "appointments -> validations"."managerId", "appointments -> validations".validated, "chatMessages".id, certificates.id, mobility.id, studies.id Buckets: 16384 (originally 1024) Batches: 2 (originally 1) Memory Usage: 4071kB Buffers: shared hit=484, temp written=7 -> Hash Right Join (cost=147.57..153.89 rows=13 width=876) (actual time=2.886..8.128 rows=8846 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, appointments.id, appointments.day, appointments."time", appointments.status, "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser -> company".id, "appointments -> recruiterUser -> company".title, "appointments -> validations"."managerId", "appointments -> validations".validated, "chatMessages".id, certificates.id, mobility.id, studies.id Hash Cond: (appointments.candidate = "User".id) Buffers: shared hit=484 -> Hash Left Join (cost=54.04..59.88 rows=124 width=70) (actual time=0.452..0.598 rows=130 loops=1) Output: appointments.id, appointments.day, appointments."time", appointments.status, appointments.candidate, "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser -> company".id, "appointments -> recruiterUser -> company".title, "appointments -> validations"."managerId", "appointments -> validations".validated Hash Cond: (appointments.id = "appointments -> validations"."appointmentId") Buffers: shared hit=34 -> Hash Join (cost=53.02..58.38 rows=124 width=65) (actual time=0.441..0.557 rows=130 loops=1) Output: appointments.id, appointments.day, appointments."time", appointments.status, appointments.candidate, "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser -> company".id, "appointments -> recruiterUser -> company".title Inner Unique: true Hash Cond: ("appointments -> recruiterUser"."companyId" = "appointments -> recruiterUser -> company".id) Buffers: shared hit=33 -> Hash Join (cost=44.07..49.11 rows=124 width=54) (actual time=0.380..0.460 rows=130 loops=1) Output: appointments.id, appointments.day, appointments."time", appointments.status, appointments.candidate, "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser"."companyId" Inner Unique: true Hash Cond: (appointments.recruiter = "appointments -> recruiterUser".id) Buffers: shared hit=27 -> Seq Scan on public."Appointments" appointments (cost=0.00..4.71 rows=124 width=36) (actual time=0.007..0.045 rows=130 loops=1) Output: appointments.id, appointments.recruiter, appointments.candidate, appointments.day, appointments."time", appointments.status, appointments."createdAt", appointments."updatedAt", appointments.type, appointments."eventId", appointments.rating Filter: ((appointments.type)::text = 'meeting'::text) Rows Removed by Filter: 13 Buffers: shared hit=3 -> Hash (cost=32.92..32.92 rows=892 width=22) (actual time=0.368..0.369 rows=897 loops=1) Output: "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser"."companyId" Buckets: 1024 Batches: 1 Memory Usage: 52kB Buffers: shared hit=24 -> Seq Scan on public."Users" "appointments -> recruiterUser" (cost=0.00..32.92 rows=892 width=22) (actual time=0.004..0.199 rows=897 loops=1) Output: "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser"."companyId" Buffers: shared hit=24 -> Hash (cost=7.31..7.31 rows=131 width=15) (actual time=0.055..0.055 rows=132 loops=1) Output: "appointments -> recruiterUser -> company".id, "appointments -> recruiterUser -> company".title Buckets: 1024 Batches: 1 Memory Usage: 15kB Buffers: shared hit=6 -> Seq Scan on public."Companies" "appointments -> recruiterUser -> company" (cost=0.00..7.31 rows=131 width=15) (actual time=0.006..0.031 rows=132 loops=1) Output: "appointments -> recruiterUser -> company".id, "appointments -> recruiterUser -> company".title Buffers: shared hit=6 -> Hash (cost=1.01..1.01 rows=1 width=9) (actual time=0.006..0.007 rows=4 loops=1) Output: "appointments -> validations"."managerId", "appointments -> validations".validated, "appointments -> validations"."appointmentId" Buckets: 1024 Batches: 1 Memory Usage: 9kB Buffers: shared hit=1 -> Seq Scan on public."AppointmentsValidations" "appointments -> validations" (cost=0.00..1.01 rows=1 width=9) (actual time=0.004..0.004 rows=4 loops=1) Output: "appointments -> validations"."managerId", "appointments -> validations".validated, "appointments -> validations"."appointmentId" Buffers: shared hit=1 -> Hash (cost=93.37..93.37 rows=13 width=810) (actual time=2.428..2.445 rows=922 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, "chatMessages".id, certificates.id, mobility.id, studies.id Buckets: 1024 Batches: 1 Memory Usage: 365kB Buffers: shared hit=450 -> Hash Right Join (cost=87.37..93.37 rows=13 width=810) (actual time=1.533..2.070 rows=922 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, "chatMessages".id, certificates.id, mobility.id, studies.id Hash Cond: (studies."userId" = "User".id) Buffers: shared hit=450 -> Seq Scan on public."CandidateDiplomas" studies (cost=0.00..5.16 rows=216 width=8) (actual time=0.003..0.022 rows=216 loops=1) Output: studies.id, studies."fieldOfStudies", studies.year, studies."userId", studies."createdAt", studies."updatedAt", studies."levelId", studies.school Buffers: shared hit=3 -> Hash (cost=87.21..87.21 rows=13 width=806) (actual time=1.514..1.528 rows=489 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, "chatMessages".id, certificates.id, mobility.id Buckets: 1024 Batches: 1 Memory Usage: 190kB Buffers: shared hit=447 -> Hash Right Join (cost=81.52..87.21 rows=13 width=806) (actual time=1.034..1.330 rows=489 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, "chatMessages".id, certificates.id, mobility.id Hash Cond: ("chatMessages"."userId" = "User".id) Buffers: shared hit=447 -> Seq Scan on public."ChatMessages" "chatMessages" (cost=0.00..5.05 rows=163 width=8) (actual time=0.005..0.026 rows=164 loops=1) Output: "chatMessages".id, "chatMessages"."roomId", "chatMessages"."userId", "chatMessages"."isNew", "chatMessages".text, "chatMessages"."createdAt", "chatMessages"."updatedAt" Filter: ("chatMessages"."userId" <> 769) Buffers: shared hit=3 -> Hash (cost=81.36..81.36 rows=13 width=802) (actual time=1.024..1.037 rows=75 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, certificates.id, mobility.id Buckets: 1024 Batches: 1 Memory Usage: 25kB Buffers: shared hit=444 -> Hash Right Join (cost=76.36..81.36 rows=13 width=802) (actual time=0.949..1.005 rows=75 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, certificates.id, mobility.id Hash Cond: (mobility."userId" = "User".id) Buffers: shared hit=444 -> Seq Scan on public."CandidateMobility" mobility (cost=0.00..4.16 rows=216 width=8) (actual time=0.006..0.028 rows=218 loops=1) Output: mobility.id, mobility."userId", mobility."willingnessToTravel", mobility."createdAt", mobility."updatedAt", mobility."drivingCategory", mobility."travelPercentageId" Buffers: shared hit=2 -> Hash (cost=76.20..76.20 rows=13 width=798) (actual time=0.909..0.919 rows=75 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, certificates.id Buckets: 1024 Batches: 1 Memory Usage: 25kB Buffers: shared hit=442 -> Hash Right Join (cost=72.60..76.20 rows=13 width=798) (actual time=0.849..0.888 rows=75 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated, certificates.id Hash Cond: (certificates."userId" = "User".id) Buffers: shared hit=442 -> Seq Scan on public."CandidateCertificates" certificates (cost=0.00..3.15 rows=115 width=8) (actual time=0.006..0.017 rows=115 loops=1) Output: certificates.id, certificates.title, certificates.year, certificates."userId", certificates."createdAt", certificates."updatedAt" Buffers: shared hit=2 -> Hash (cost=72.44..72.44 rows=13 width=794) (actual time=0.815..0.824 rows=75 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated Buckets: 1024 Batches: 1 Memory Usage: 24kB Buffers: shared hit=440 -> Nested Loop Left Join (cost=60.91..72.44 rows=13 width=794) (actual time=0.648..0.793 rows=75 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile", "applications -> validations"."managerId", "applications -> validations".validated Join Filter: (applications.id = "applications -> validations"."applicationId") Rows Removed by Join Filter: 136 Buffers: shared hit=440 -> Nested Loop Left Join (cost=60.91..71.02 rows=13 width=789) (actual time=0.640..0.729 rows=75 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "applications -> cv".id, "applications -> cv"."cvFile" Inner Unique: true Buffers: shared hit=439 -> Hash Right Join (cost=60.77..66.62 rows=13 width=713) (actual time=0.636..0.691 rows=75 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, applications.id, applications."cvId", "applications -> job".id, "applications -> job".title, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain Hash Cond: (applications."userId" = "User".id) Buffers: shared hit=439 -> Hash Join (cost=38.91..44.32 rows=112 width=36) (actual time=0.182..0.237 rows=112 loops=1) Output: applications.id, applications."cvId", applications."userId", "applications -> job".id, "applications -> job".title Inner Unique: true Hash Cond: (applications."jobId" = "applications -> job".id) Buffers: shared hit=36 -> Seq Scan on public."JobApplications" applications (cost=0.00..5.12 rows=112 width=16) (actual time=0.003..0.015 rows=112 loops=1) Output: applications.id, applications.description, applications."hidePersonalData", applications."cvId", applications."jobId", applications."userId", applications."createdAt", applications."updatedAt", applications."recommendationId", applications.status, applications.type Buffers: shared hit=4 -> Hash (cost=35.07..35.07 rows=307 width=24) (actual time=0.174..0.174 rows=308 loops=1) Output: "applications -> job".id, "applications -> job".title Buckets: 1024 Batches: 1 Memory Usage: 26kB Buffers: shared hit=32 -> Seq Scan on public."Jobs" "applications -> job" (cost=0.00..35.07 rows=307 width=24) (actual time=0.003..0.115 rows=308 loops=1) Output: "applications -> job".id, "applications -> job".title Buffers: shared hit=32 -> Hash (cost=21.70..21.70 rows=13 width=681) (actual time=0.415..0.418 rows=63 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain Buckets: 1024 Batches: 1 Memory Usage: 19kB Buffers: shared hit=403 -> Nested Loop (cost=1.46..21.70 rows=13 width=681) (actual time=0.065..0.392 rows=63 loops=1) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email, visits.id, visits."time", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain Inner Unique: true Buffers: shared hit=403 -> Hash Join (cost=1.19..7.71 rows=19 width=536) (actual time=0.053..0.139 rows=133 loops=1) Output: visits.id, visits."time", visits."userId", "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain Inner Unique: true Hash Cond: (visits."jobBoardId" = "visits -> jobBoard".id) Buffers: shared hit=4 -> Seq Scan on public."UserVisits" visits (cost=0.00..5.62 rows=262 width=20) (actual time=0.028..0.058 rows=262 loops=1) Output: visits.id, visits."userId", visits."jobBoardId", visits."time", visits."createdAt", visits."updatedAt" Buffers: shared hit=3 -> Hash (cost=1.18..1.18 rows=1 width=524) (actual time=0.018..0.018 rows=5 loops=1) Output: "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "visits -> jobBoard".id Buckets: 1024 Batches: 1 Memory Usage: 9kB Buffers: shared hit=1 -> Seq Scan on public."JobBoards" "visits -> jobBoard" (cost=0.00..1.18 rows=1 width=524) (actual time=0.009..0.014 rows=5 loops=1) Output: "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "visits -> jobBoard".id Filter: ("visits -> jobBoard".creator = 769) Rows Removed by Filter: 11 Buffers: shared hit=1 -> Index Scan using "Users_pkey" on public."Users" "User" (cost=0.28..0.74 rows=1 width=149) (actual time=0.001..0.001 rows=0 loops=133) Output: "User".id, "User"."firstName", "User"."lastName", "User".email, "User"."emailVerified", "User".password, "User".status, "User"."createdAt", "User"."updatedAt", "User"."companyId", "User"."roleId", "User"."avatarKey", "User".avatar, "User".phone, "User"."metaData", "User".biography, "User".language Index Cond: ("User".id = visits."userId") Filter: ("User"."roleId" = ANY ('{5}'::integer[])) Rows Removed by Filter: 1 Buffers: shared hit=399 -> Index Scan using "UsersCV_pkey" on public."UsersCV" "applications -> cv" (cost=0.14..0.34 rows=1 width=80) (actual time=0.000..0.000 rows=0 loops=75) Output: "applications -> cv".id, "applications -> cv"."cvFile", "applications -> cv"."cvLink", "applications -> cv"."cvFileKey", "applications -> cv"."userId", "applications -> cv"."createdAt", "applications -> cv"."updatedAt" Index Cond: ("applications -> cv".id = applications."cvId") -> Materialize (cost=0.00..1.03 rows=2 width=9) (actual time=0.000..0.000 rows=2 loops=75) Output: "applications -> validations"."managerId", "applications -> validations".validated, "applications -> validations"."applicationId" Buffers: shared hit=1 -> Seq Scan on public."JobApplicationsValidations" "applications -> validations" (cost=0.00..1.02 rows=2 width=9) (actual time=0.005..0.005 rows=2 loops=1) Output: "applications -> validations"."managerId", "applications -> validations".validated, "applications -> validations"."applicationId" Buffers: shared hit=1 -> Materialize (cost=0.00..1.03 rows=1 width=13) (actual time=0.000..0.001 rows=8 loops=71346) Output: validations.id, validations.validated, validations."jobBoardId", validations."userId" Buffers: shared hit=1 -> Seq Scan on public."UserValidations" validations (cost=0.00..1.02 rows=1 width=13) (actual time=0.007..0.010 rows=8 loops=1) Output: validations.id, validations.validated, validations."jobBoardId", validations."userId" Filter: (validations."managerId" = 769) Buffers: shared hit=1 Planning Time: 15.526 ms Execution Time: 3427.489 ms (236 rows)