Le problème: nous avons une requête de recherche très complexe. Si son résultat donne trop peu de lignes, nous étendons le résultat en UNIONing la requête avec une version moins stricte de la même requête.Performance SQL: UNION ou ORDER BY
Nous discutons si une approche différente serait plus rapide et/ou meilleure en qualité. Au lieu de UNIONing nous créerions une fonction sql personnalisée qui retournerait un score correspondant. Ensuite, nous pourrions simplement commander par ce score correspondant.
En ce qui concerne les performances: sera-t-il plus lent qu'un UNION?
Nous utilisons PostgreSQL.
Toutes les suggestions seraient grandement appréciées.
Merci beaucoup Max
Oui, il suffit de créer un index d'expression sur la sortie de la fonction –
Oui, il serait possible que ce soit le même appel de fonction à chaque fois, comme dans l'exemple du manuel "WHERE lower (col1) = 'value' "Mais Max veut calculer une sorte de score correspondant à une chaîne de recherche en constante évolution." Indexes on Expressions ": http://www.postgresql.org/docs/8.4/interactive/indexes-expressional.html – VolkerK