adapt query to simplify join clauses (lightly improve perfs)

This commit is contained in:
2023-07-12 10:50:17 +02:00
parent a2e705bd92
commit f3829d3390
2 changed files with 22 additions and 7 deletions

View File

@@ -71,12 +71,9 @@ class ThirdPartyApiSearch implements SearchApiInterface
->setSelectKey('tparty')
->setSelectJsonbMetadata("jsonb_build_object('id', tparty.id)")
->setFromClause('chill_3party.third_party AS tparty
LEFT JOIN chill_main_address cma ON cma.id = tparty.address_id
LEFT JOIN chill_main_postal_code cmpc ON cma.postcode_id = cmpc.id
LEFT JOIN chill_3party.third_party AS parent ON tparty.parent_id = parent.id
LEFT JOIN chill_main_address cma_p ON parent.address_id = cma_p.id
LEFT JOIN chill_main_postal_code cmpc_p ON cma_p.postcode_id = cmpc_p.id')
->andWhereClause('tparty.active IS TRUE');
LEFT JOIN chill_main_address cma ON cma.id = COALESCE(parent.address_id, tparty.address_id)
LEFT JOIN chill_main_postal_code cmpc ON cma.postcode_id = cmpc.id');
$strs = explode(' ', $pattern);
$wheres = [];
@@ -102,8 +99,7 @@ class ThirdPartyApiSearch implements SearchApiInterface
(parent.canonicalized LIKE '%s' || LOWER(UNACCENT(?)) || '%')::int
) + " .
// take postcode label into account, but lower than the canonicalized field
"COALESCE((LOWER(UNACCENT(cmpc.label)) LIKE '%' || LOWER(UNACCENT(?)) || '%')::int * 0.3, 0) + " .
"COALESCE((LOWER(UNACCENT(cmpc_p.label)) LIKE '%' || LOWER(UNACCENT(?)) || '%')::int * 0.3, 0)";
"COALESCE((LOWER(UNACCENT(cmpc.label)) LIKE '%' || LOWER(UNACCENT(?)) || '%')::int * 0.3, 0)";
$pertinenceArgs[] = [$str, $str, $str, $str, $str, $str];
}
}