QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Limit (cost=519.89..520.01 rows=50 width=326) (actual time=701.809..705.301 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=428, temp read=4229 written=4235 -> Sort (cost=519.89..521.88 rows=796 width=326) (actual time=701.806..705.276 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: 17496kB Buffers: shared hit=428, temp read=4229 written=4235 -> GroupAggregate (cost=425.79..493.45 rows=796 width=326) (actual time=143.301..665.174 rows=53 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=428, temp read=2042 written=2046 -> Sort (cost=425.79..427.78 rows=796 width=391) (actual time=115.244..135.668 rows=33269 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: 16048kB Buffers: shared hit=428, temp read=2042 written=2046 -> Hash Left Join (cost=360.45..387.43 rows=796 width=391) (actual time=23.388..64.705 rows=33269 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" Hash Cond: ("User".id = validations."userId") Buffers: shared hit=428, temp read=36 written=36 -> Hash Left Join (cost=359.43..383.41 rows=796 width=382) (actual time=23.375..47.501 rows=17717 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: ("User".id = address."userId") Buffers: shared hit=427, temp read=36 written=36 -> Hash Right Join (cost=343.52..361.87 rows=796 width=378) (actual time=23.150..36.132 rows=17717 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=418, temp read=36 written=36 -> Seq Scan on public."CandidateExperience" experience (cost=0.00..13.72 rows=372 width=8) (actual time=0.007..0.153 rows=376 loops=1) Output: experience.id, experience."userId" Buffers: shared hit=10 -> Hash (cost=333.57..333.57 rows=796 width=374) (actual time=22.990..23.033 rows=8261 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: 3969kB Buffers: shared hit=408, temp written=34 -> Hash Right Join (cost=286.44..333.57 rows=796 width=374) (actual time=10.340..14.706 rows=8261 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: (appointments.candidate = "User".id) Buffers: shared hit=408 -> Hash Right Join (cost=58.14..91.95 rows=1430 width=69) (actual time=1.016..1.055 rows=70 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 -> validations"."appointmentId" = appointments.id) Buffers: shared hit=34 -> Seq Scan on public."AppointmentsValidations" "appointments -> validations" (cost=0.00..24.30 rows=1430 width=9) (actual time=0.003..0.004 rows=1 loops=1) Output: "appointments -> validations".id, "appointments -> validations"."appointmentId", "appointments -> validations"."managerId", "appointments -> validations".validated, "appointments -> validations"."createdAt", "appointments -> validations"."updatedAt" Buffers: shared hit=1 -> Hash (cost=57.41..57.41 rows=58 width=64) (actual time=0.999..1.006 rows=70 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 Buckets: 1024 Batches: 1 Memory Usage: 15kB Buffers: shared hit=33 -> Hash Join (cost=48.26..57.41 rows=58 width=64) (actual time=0.864..0.965 rows=70 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 Hash Cond: ("appointments -> recruiterUser -> company".id = "appointments -> recruiterUser"."companyId") Buffers: shared hit=33 -> Seq Scan on public."Companies" "appointments -> recruiterUser -> company" (cost=0.00..8.27 rows=127 width=14) (actual time=0.006..0.048 rows=131 loops=1) Output: "appointments -> recruiterUser -> company".id, "appointments -> recruiterUser -> company".title, "appointments -> recruiterUser -> company".description, "appointments -> recruiterUser -> company"."createdAt", "appointments -> recruiterUser -> company"."updatedAt", "appointments -> recruiterUser -> company".website, "appointments -> recruiterUser -> company".email, "appointments -> recruiterUser -> company".phone, "appointments -> recruiterUser -> company".logo, "appointments -> recruiterUser -> company"."logoKey", "appointments -> recruiterUser -> company"."vatNumber", "appointments -> recruiterUser -> company"."bannerKey", "appointments -> recruiterUser -> company".banner Buffers: shared hit=7 -> Hash (cost=47.53..47.53 rows=58 width=54) (actual time=0.839..0.844 rows=70 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" Buckets: 1024 Batches: 1 Memory Usage: 15kB Buffers: shared hit=26 -> Hash Join (cost=45.66..47.53 rows=58 width=54) (actual time=0.739..0.807 rows=70 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=26 -> Seq Scan on public."Appointments" appointments (cost=0.00..1.73 rows=58 width=36) (actual time=0.007..0.033 rows=70 loops=1) Output: appointments.id, appointments.day, appointments."time", appointments.status, appointments.recruiter, appointments.candidate Filter: ((appointments.type)::text = 'meeting'::text) Rows Removed by Filter: 9 Buffers: shared hit=1 -> Hash (cost=34.18..34.18 rows=918 width=22) (actual time=0.716..0.718 rows=899 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=25 -> Seq Scan on public."Users" "appointments -> recruiterUser" (cost=0.00..34.18 rows=918 width=22) (actual time=0.004..0.374 rows=899 loops=1) Output: "appointments -> recruiterUser".id, "appointments -> recruiterUser"."firstName", "appointments -> recruiterUser"."lastName", "appointments -> recruiterUser"."companyId" Buffers: shared hit=25 -> Hash (cost=221.91..221.91 rows=511 width=309) (actual time=9.310..9.342 rows=2697 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, skills.id, "languagesList".id, certificates.id, mobility.id, studies.id Buckets: 4096 (originally 1024) Batches: 1 (originally 1) Memory Usage: 1130kB Buffers: shared hit=374 -> Hash Left Join (cost=195.56..221.91 rows=511 width=309) (actual time=3.499..7.226 rows=2697 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, skills.id, "languagesList".id, certificates.id, mobility.id, studies.id Hash Cond: ("User".id = studies."userId") Buffers: shared hit=374 -> Hash Left Join (cost=186.79..206.85 rows=511 width=305) (actual time=3.338..5.748 rows=1395 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, skills.id, "languagesList".id, certificates.id, mobility.id Hash Cond: ("User".id = mobility."userId") Buffers: shared hit=370 -> Hash Left Join (cost=180.14..197.13 rows=511 width=301) (actual time=3.193..4.757 rows=1395 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, skills.id, "languagesList".id, certificates.id Hash Cond: ("User".id = certificates."userId") Buffers: shared hit=368 -> Hash Right Join (cost=175.55..187.43 rows=511 width=297) (actual time=3.090..3.867 rows=1395 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, skills.id, "languagesList".id Hash Cond: ("languagesList"."userId" = "User".id) Buffers: shared hit=366 -> Seq Scan on public."CandidateLanguage" "languagesList" (cost=0.00..8.08 rows=408 width=8) (actual time=0.006..0.125 rows=408 loops=1) Output: "languagesList".id, "languagesList"."userId" Buffers: shared hit=4 -> Hash (cost=169.16..169.16 rows=511 width=293) (actual time=2.925..2.946 rows=720 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, skills.id Buckets: 1024 Batches: 1 Memory Usage: 285kB Buffers: shared hit=362 -> Hash Right Join (cost=157.40..169.16 rows=511 width=293) (actual time=1.921..2.418 rows=720 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, skills.id Hash Cond: (skills."userId" = "User".id) Buffers: shared hit=362 -> Seq Scan on public."CandidateSkills" skills (cost=0.00..8.50 rows=350 width=8) (actual time=0.004..0.145 rows=350 loops=1) Output: skills.id, skills."userId" Buffers: shared hit=5 -> Hash (cost=151.01..151.01 rows=511 width=289) (actual time=1.788..1.807 rows=378 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 Buckets: 1024 Batches: 1 Memory Usage: 145kB Buffers: shared hit=357 -> Hash Right Join (cost=144.62..151.01 rows=511 width=289) (actual time=1.244..1.499 rows=378 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 Hash Cond: ("chatMessages"."userId" = "User".id) Buffers: shared hit=357 -> Seq Scan on public."ChatMessages" "chatMessages" (cost=0.00..4.95 rows=155 width=8) (actual time=0.006..0.052 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=138.23..138.23 rows=511 width=285) (actual time=1.219..1.235 rows=66 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: 22kB Buffers: shared hit=354 -> Hash Right Join (cost=106.07..138.23 rows=511 width=285) (actual time=1.147..1.190 rows=66 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 Hash Cond: ("applications -> validations"."applicationId" = applications.id) Buffers: shared hit=354 -> Seq Scan on public."JobApplicationsValidations" "applications -> validations" (cost=0.00..24.30 rows=1430 width=9) (actual time=0.003..0.004 rows=2 loops=1) Output: "applications -> validations".id, "applications -> validations"."applicationId", "applications -> validations"."managerId", "applications -> validations".validated, "applications -> validations"."createdAt", "applications -> validations"."updatedAt" Buffers: shared hit=1 -> Hash (cost=105.63..105.63 rows=35 width=280) (actual time=1.132..1.145 rows=66 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" Buckets: 1024 Batches: 1 Memory Usage: 22kB Buffers: shared hit=353 -> Hash Left Join (cost=59.11..105.63 rows=35 width=280) (actual time=0.630..1.097 rows=66 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 Hash Cond: (applications."cvId" = "applications -> cv".id) Buffers: shared hit=353 -> Hash Left Join (cost=53.81..100.25 rows=35 width=204) (actual time=0.535..0.963 rows=66 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: ("User".id = applications."userId") Buffers: shared hit=350 -> Nested Loop (cost=2.49..48.45 rows=35 width=172) (actual time=0.059..0.445 rows=57 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=308 -> Hash Join (cost=2.21..8.27 rows=49 width=27) (actual time=0.044..0.198 rows=101 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=5 -> Seq Scan on public."UserVisits" visits (cost=0.00..5.28 rows=228 width=20) (actual time=0.010..0.068 rows=230 loops=1) Output: visits.id, visits."userId", visits."jobBoardId", visits."time", visits."createdAt", visits."updatedAt" Buffers: shared hit=3 -> Hash (cost=2.17..2.17 rows=3 width=15) (actual time=0.020..0.021 rows=3 loops=1) Output: "visits -> jobBoard".anonymized, "visits -> jobBoard".subdomain, "visits -> jobBoard".id Buckets: 1024 Batches: 1 Memory Usage: 9kB Buffers: shared hit=2 -> Seq Scan on public."JobBoards" "visits -> jobBoard" (cost=0.00..2.17 rows=3 width=15) (actual time=0.006..0.013 rows=3 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=2 -> Index Scan using "Users_pkey" on public."Users" "User" (cost=0.28..0.82 rows=1 width=149) (actual time=0.002..0.002 rows=1 loops=101) Output: "User".id, "User"."firstName", "User"."lastName", "User".phone, "User".biography, "User".email Index Cond: ("User".id = visits."userId") Filter: ("User"."roleId" = ANY ('{5}'::integer[])) Rows Removed by Filter: 0 Buffers: shared hit=303 -> Hash (cost=50.10..50.10 rows=98 width=36) (actual time=0.463..0.467 rows=96 loops=1) Output: applications.id, applications."cvId", applications."userId", "applications -> job".id, "applications -> job".title Buckets: 1024 Batches: 1 Memory Usage: 15kB Buffers: shared hit=42 -> Hash Join (cost=44.86..50.10 rows=98 width=36) (actual time=0.320..0.422 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=42 -> Seq Scan on public."JobApplications" applications (cost=0.00..4.98 rows=98 width=16) (actual time=0.004..0.044 rows=112 loops=1) Output: applications.id, applications."jobId", applications."cvId", applications."userId" Buffers: shared hit=4 -> Hash (cost=41.05..41.05 rows=305 width=24) (actual time=0.304..0.305 rows=307 loops=1) Output: "applications -> job".id, "applications -> job".title Buckets: 1024 Batches: 1 Memory Usage: 26kB Buffers: shared hit=38 -> Seq Scan on public."Jobs" "applications -> job" (cost=0.00..41.05 rows=305 width=24) (actual time=0.003..0.176 rows=307 loops=1) Output: "applications -> job".id, "applications -> job".title Buffers: shared hit=38 -> Hash (cost=4.02..4.02 rows=102 width=80) (actual time=0.079..0.081 rows=112 loops=1) Output: "applications -> cv".id, "applications -> cv"."cvFile" Buckets: 1024 Batches: 1 Memory Usage: 21kB Buffers: shared hit=3 -> Seq Scan on public."UsersCV" "applications -> cv" (cost=0.00..4.02 rows=102 width=80) (actual time=0.005..0.038 rows=112 loops=1) Output: "applications -> cv".id, "applications -> cv"."cvFile" Buffers: shared hit=3 -> Hash (cost=3.15..3.15 rows=115 width=8) (actual time=0.088..0.089 rows=115 loops=1) Output: certificates.id, certificates."userId" Buckets: 1024 Batches: 1 Memory Usage: 13kB Buffers: shared hit=2 -> Seq Scan on public."CandidateCertificates" certificates (cost=0.00..3.15 rows=115 width=8) (actual time=0.006..0.039 rows=115 loops=1) Output: certificates.id, certificates."userId" Buffers: shared hit=2 -> Hash (cost=4.07..4.07 rows=207 width=8) (actual time=0.131..0.132 rows=217 loops=1) Output: mobility.id, mobility."userId" Buckets: 1024 Batches: 1 Memory Usage: 17kB Buffers: shared hit=2 -> Seq Scan on public."CandidateMobility" mobility (cost=0.00..4.07 rows=207 width=8) (actual time=0.007..0.066 rows=217 loops=1) Output: mobility.id, mobility."userId" Buffers: shared hit=2 -> Hash (cost=6.12..6.12 rows=212 width=8) (actual time=0.143..0.145 rows=216 loops=1) Output: studies.id, studies."userId" Buckets: 1024 Batches: 1 Memory Usage: 17kB Buffers: shared hit=4 -> Seq Scan on public."CandidateDiplomas" studies (cost=0.00..6.12 rows=212 width=8) (actual time=0.017..0.082 rows=216 loops=1) Output: studies.id, studies."userId" Buffers: shared hit=4 -> Hash (cost=12.07..12.07 rows=307 width=8) (actual time=0.216..0.217 rows=198 loops=1) Output: address.id, address."userId" Buckets: 1024 Batches: 1 Memory Usage: 16kB Buffers: shared hit=9 -> Seq Scan on public."Address" address (cost=0.00..12.07 rows=307 width=8) (actual time=0.004..0.132 rows=330 loops=1) Output: address.id, address."userId" Buffers: shared hit=9 -> Hash (cost=1.01..1.01 rows=1 width=13) (actual time=0.008..0.009 rows=2 loops=1) Output: validations.id, validations.validated, validations."jobBoardId", validations."userId" Buckets: 1024 Batches: 1 Memory Usage: 9kB Buffers: shared hit=1 -> Seq Scan on public."UserValidations" validations (cost=0.00..1.01 rows=1 width=13) (actual time=0.005..0.006 rows=2 loops=1) Output: validations.id, validations.validated, validations."jobBoardId", validations."userId" Filter: (validations."managerId" = 769) Buffers: shared hit=1 Planning Time: 17.324 ms Execution Time: 710.599 ms (240 rows)